“Mükemmel programcı Sendromu” nu kırmanın yolları [kapalı]


16

Muhtemelen böyle hisseden sadece ben değilim. Ama "mükemmel programcı sendromu" dediğim gibi birçoğunun mükemmeliyetçi olmakla aynı şey olduğunu söyleyebilirim, ama bu durumda programlama alanında. Bununla birlikte, programlama alanı böyle bir sendrom için biraz problemlidir.

Programlarken kodunuzun en iyi uygulamaların çoğunu izleyen temiz ve iyi bir kod olduğundan emin olmadığınızı veya asla kendinize güvenmediğinizi hissettiniz mi? İzlenecek çok kural var ki bir şekilde bunalmış gibi hissediyorum. Elbette kurallara uymayı sevmiyorum, programcıyım ve programlamayı seviyorum, bunu bir sanat olarak görüyorum ve kurallara uymalıyım. Ama ben de seviyorum, demek istediğim ve yaptığım şeylerin doğru şekilde gittiğini iyi hissetmek için kuralları takip etmeyi seviyorum .. ama keşke sadece "kontrol" en iyi uygulamalar ve iyi kod konusunda.

Belki organizasyon eksikliği var mı? Belki de deneyim eksikliği? Belki uygulama eksikliği? Belki birisinin işaret edebileceği başka bir şeyin eksikliği? Bir şekilde bu sendromdan kurtulmanın bir yolu var mı?


1
Bu soru, kişisel geçmişiniz hakkında biraz daha fazla bilgi alarak yanıtlanabilir, ancak bu çok hızlı bir şekilde yerelleştirilebilir. Tao Of Programming başlamak için iyi bir yer olabilir.
back2dos

Orada aynı fikirde değilim ... arka planı bu şekilde hissedebilen herkese inanıyorum belki farklı derecelerde ama yine de.
Rushino

2
Herkes aynı semptomları yaşayabilirken, neden aslında çok değişkendir ve bu nedenle "tedavi" yapar.
back2dos

Mükemmel bir programcı yok. Yeteneklerini geliştirmek için ivme ve arzuya sahip deneyimli ve detay odaklı bir tane bulabilirsiniz. - onlara "Go
Getters

“Kurallara uymalıyım” ... ve senin sorunun var. "En iyi uygulamalar" öyle değil, kolektif deneyime dayalı önerilerdir. Onlara kırılmaz kurallar olarak davranıyorsanız, stresinizin kökenini görebiliyorum.
GrandmasterB

Yanıtlar:


21

Öncelik verin . Her şey sırayla. Neyin önemli olduğuna odaklanın.

Öncelikleriniz değişebilir, ancak genel olarak şunlara dikkat etmelisiniz:

  • Doğru kod
  • Sürdürülebilir kod
  • Kodu temizle
  • Basit, zarif kod
  • Verimli kod

Belki bu sırayla. Ancak, ilk nokta en önemlisidir. Onsuz, kod işe yaramaz. Düzgün çalışmayan bir programla ne yaparsınız?

Çalışmasını sağlayın, diğer her şey çözmeniz gereken sorunları çözmek için önemsizdir. Tabii ki, ben de bundan muzdaripim. Yardımcı olan öğrendiğim sadece işe yarayan çözümlere odaklanmak . Bu kadarı yeterli. Bu işin% 99'u.

İyi kod gibi bir şey düşünmek isteyebilirsiniz . Bu ne? Ne tür insanlar yazıyor? İyi kod nasıl yazılır ? Çok basit. Çalışan kodu yazın . Çalışma kodu iyi bir koddur. Diğer her şey daha sonra gelir.

Tabii ki, profesyonel, ekip ortamında kod yazarken, açık, okunabilir kod ve bakımı kolay kod giderek önem kazanmaktadır. Ancak, yine de ilk görev, çalışmasını sağlamak ve buna odaklanmaktır. Ancak o zaman daha iyisi için iyileştirmeye ve yeniden düzenlemeye başlayabilirsiniz - gerekirse.

Kod doğruluğunun çok önemli olduğu genellikle açıktır - yine de hepimiz kod yazarken bunun önemini benimsemiyoruz. Biz, biz erken optimizasyonu kullanmak, kestirmeden deneyin yazmak için zarif kod biz bile önce çalışma kod yazılı. En başından itibaren mükemmellik için çabalamak insan doğasıdır, ancak programlama ve yazılım geliştirme yinelemeli süreçlerdir ve öncelikler mevcuttur. Böylece, tekrar, çalışmasını sağlayın , daha sonra her şey için endişelenin. Doğru kodun önemini anlayın ve bunun için çabalayın.

Tonlarca ve tonlarca sözde iyi uygulamalar olsa da , sağduyu en önemli şeydir, uygulamaların neden iyi kabul edildiğini, ne zaman ve nerede uygulanacağını düşünün. Yine de, iyi uygulamaların her bir parçasını karşılamaya çalışmayın. Kişisel deneyimin yerini tutamaz veya değiştiremez. Sık karşılaşılan tuzaklardan kaçınamazsınız - kaç kitap okursanız, katıldığınız seminerlerden ya da başka bir şeyden bağımsız olarak. Önemli olan, mümkün olan her şeyi yaparak, doğru bir şekilde yaparak ve eğlenerek öğrenmektir.


9
En iyi optimizasyon, programınızı çalışma dışı durumdan çalışma durumuna getiren olandır.
deadalnix

1
@deadalnix Mükemmel tavsiye! Çok basit, çok açık, ama tüm kodlarda çok doğru.
zxcdw

7
+1. Ben koyarak düşünün sürdürülebilir yukarıda doğru . Sürdürülebilir kodun tek bir kalitesinden sonra, düzeltmenin makul bir çaba meselesi olması;)
back2dos

1
Eğer veritabanı kodu ve zarif bir yol hakkında konuşuyorsanız EFficient her şeyin üstünde olmalı ama doğru olmalıdır. İyi sql kodu (geliştirici olmayan datbase için iyi) nadiren zariftir. Bazı şeyleri yapmanın verimsiz yolları vardır ve bunları düzenli olarak kullanmaya başladıktan sonra daha az sürdürülemez veya anlaşılması daha zor değildir.
HLGEM

2
@HLGEM Gerçekten, belirli alanlarda öncelikler tamamen tersine çevrilebilir. Örneğin, aşırı büyüklük ve hız kısıtlamaları (demossen ürünleri) altında yazılmış montaj kodunu yazıyorum ve tersine mühendislik yapıyorum. Bu gibi durumlarda, programın doğruluğu bile sorgulanabilir - birçok arızalı kod parçasının son derece iyi çalıştığı ortaya çıktı (örneğin, yanlış koda dayanan güzel görsel ve işitsel eserler).
zxcdw

6

Bu problemden kaçınmanın en basit yolu sadece acı veren şeyleri değiştirmektir. Bazı değişikliklerin daha da iyi hale getirebileceğini düşünseniz bile, doğru, okunabilir ve bakımı yapılabilir kodu parlatmayın. Ancak, örneğin, amacı belirsiz olan bir değişkeni veya anlaşılması çok uzun olan bir işlevi değiştirmeye çalıştığınızda bunu düzeltin. Daha erken değil.

Bu, ilk etapta iyi, temiz kod için çabalamamanız gerektiği anlamına gelmez, elbette yapmanız gerekir, ancak aksi kanıtlanmadığı sürece ilk denemenizi "yeterince iyi" olarak düşünmelisiniz.


+1 bölümü beğendim .. "aksi belirtilmedikçe ilk denemeniz" yeterince iyi ".
Rushino

İkincisi ve onaylandı. Kesinlikle altın tavsiye!
zxcdw

4

Bence bunun en iyi panzehiri kendinize hatırlamaktır ki tüm bu en iyi uygulamalar ve kod temizliği kuralları kendi iyiliği için mevcut değildir ve kodun kendisi de yoktur.

Sonunda, her şeyden daha önemli olan, yazılımın çalışması ve kullanılabilmesidir. Ve eğer bitirmezsen bu olmayacak.

Kodlamanın sanatla karşılaştırılmasını sevmiyorum, ancak bu bağlamda işe yarıyor: sanatçılar ( özellikle yazarlar ) genellikle bir parça üzerinde çalışmaya devam etmek istiyorlar çünkü her zaman mükemmel olmayan bir şey var. Ancak, yayını süresiz olarak geciktirdiğinde ve böylece kimsenin işi takdir etmesini engellediğinde mükemmellikte ne değer vardır ?


2

Gerçekleştirilmesi gereken en önemli şey, kodunuzun her zaman değişeceğidir ve her zaman iyileştirme için yer vardır. Hiçbir kod mükemmel değildir. Çoğu zaman, bugün üzerinde çalıştığınız bir sınıf kütüphanesi altı ay boyunca çok farklı olacaktır. Bazı yeni teknikler öğrenirsiniz veya sizin için gerçekten işe yarayan bir model bulursunuz. Kod kolayca korunabilir ve okunabilir olduğu sürece iyi olmalısınız. İdeal olarak, daha sonra yoldan yeniden odaklanmayı kolaylaştırmak için birim testleriniz olacaktır.

Kodun mükemmel görünmesini sağlamak ve aklınıza gelebilecek her standarda uymak kolaydır. Bu hepimize olur. Birkaç hafta önce yazdığım koda baktığımda değişiklik yapmayı düşünmeme neden oluyor. Buraya bir özellik ekleyin, oradaki yöntemi yeniden düzenleyin. Ve projenin sonunda olduğu görülüyor. Ama eğer çok fazla sarılırsanız, gösterişli bir hata yapabilirsin. Bunu kariyerimin başında birkaç kez yaptım. 3 AM hata düzeltme oturumları bir çift beni bu sorunu tedavi.


1

Başka bir şekilde yap.

"Daha iyi ne yapılabilir?" "beni sinir eden nedir?" hiçbir şey yapana kadar.


4
"Bir kitap, başka bir şey eklenemediğinde değil, ondan hiçbir şey çıkarılamadığında bitti." - Kod Tamamlandı
Jonathan

Aslında Saint-Exupéry'den bir açıklama, burada Code Complete'ten daha az güvenilirliği nasıl tutabileceği komik.
scrwtp

1

Bir programcı olarak işiniz kod üretmektir. En iyi uygulamaların amacı, işleri daha kolay anlaşılmasını / yapılmasını / hatırlanmasını sağlayarak üretim oranınızı artırmaktır. Bu uygulamalara bağlı kalmak işleri gerçekten hallediyorsa, yanlış bir şey yapıyorsunuz demektir. Sadece olabildiğince hızlı kod üretmeye çalışın ve uygulamalarınız tam da bunu yapmanıza izin verecek şekilde gelişmelidir.


Katılmıyorum. Bir programcı olarak işiniz problemleri çözmek. Çok fazla programcı bir soruna bakıyor ve "Buna bir çözüm kodlayabilirim" diyor ve zaten var olan çözümleri aramıyor . En iyi çözüm, yazmak zorunda olmadığınız çözümdür. Bununla birlikte, çözümü kodlaması gereken bir programcı olarak işiniz gereksinimleri karşılamaktır. Gereksinimleri karşılayan kodun, gereksinimler değiştiğinde ( eğer değil , ne zaman ) kolayca değiştirilebildiğinden emin olmak için en iyi uygulamalar mevcuttur .
KeithS

1

Çalıştırın, temizleyin, KATI yapın, performans gösterin.

İlk üçü, kimse zaman çizelgesine nasıl SOLID kodu yazacağını merak ettiğinde benimsediğim bir atasözüdür. Bir kod satırı ilk kez yazdığınızda, sadece çalışması gerekir, bu yüzden yapmanız gerekenleri yapın ve süslenmeyin. Bir kod satırını ilk kez yeniden ziyaret ettiğinizde, bu artık bir kerelik değil ve kodu temizlemeniz gerekir, böylece okunabilir ve böylece daha sürdürülebilir olur. İmleciniz bu satıra üçüncü kez girdiğinde, muhtemelen büyük bir sorun ve SOLID metodolojisine uymak, bağımlılıkları soyutlamak, kalıpları uygulamak ve genellikle kodu daha kolay takıp takmak için yeniden düzenlemelisiniz. gelecekteki geliştirmeler için.

Koddaki zarafet, programcının bir fırsatı fark ettiği ve genellikle önceki adımları takip ederken kodun okunabilirliğini ve sürdürülebilirliğini basitleştirmenin, temizlemenin ve genel olarak iyileştirmenin bir işlevi olduğu durumlarda sağlanacaktır. En üst düzeye çıkarılacak bir şey değil .

Performans kodu neredeyse her zaman bellek tarafından yönetilen dillerde (Java, .NET ailesi, en işlevsel diller, vb.) En az endişe kaynağıdır. Bu ortamlarda amaç, beklenen tüm kodlarda beklenen sonucu üretmek olarak tanımlanan doğru kodu ("doğru") yazmak veanlaşılabilir ve iyi yapılandırılmış ve böylece bakımı yapılabilir) ve performans ikincildir (genellikle doğru koddan bir dereceye kadar ilerler). Her durumda, bir algoritma "yeterince iyi" olduğunda performans gösterir. Unutmayın, "erken optimizasyon tüm kötülüklerin köküdür"; ihtiyaç duyacağınızı bilmediğiniz optimizasyonlar yapmak, zaman kaybetmekten, kodu gizlemekten ve genellikle ilerlemeyi önlemekten biraz daha fazlasını yapar. Önce çalışmalı, sonra çalıştıktan sonra çalıştırmalı ve ne kadar hızlı çalıştığını görmelisiniz. Yeterince hızlı değilse (yayınlanmış bir gereksinim olan bazı karşılaştırmalı değerlendirmelerle tanımlandığı gibi), olana kadar geliştirirsiniz ve sonra durursunuz .


0

Programlama konusunda gerçekten pragmatik olmanız gerekiyor. Evet, hepimiz işleri doğru yapmayı seviyoruz, ancak çalışma yazılımını teslim ettiğiniz için para alıyorsunuz, hayatınızın geri kalanında parlatmak için değil.

Alınacak yaklaşım, profesyonel yaşamınızda "bunu başarmak" tır. Teslim edin ve devam edin. Kişisel projeler için mükemmeliyetçiliğinizi kaydedin.


Anlıyorum ama inanıyorum ki bu "siyah veya beyaz" ı düşünemeyiz.
Rushino
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.