İyi bir programcının kodu neye benzer? [kapalı]


90

Ben hobi programcısıyım (excel'i daha hızlı yapmak için VBA ile başladım) ve VB.NET / C # .NET ile çalışıyorum ve ADO.NET öğrenmeye çalışıyorum.

Beni her zaman hayal kırıklığına uğratan bir programlama yönü, 'iyi' neye benziyor? Ben profesyonel değilim, bu yüzden karşılaştıracak çok az şeyim var. Daha iyi bir programcı yapan nedir? Bu mu:

  • Belirli bir dildeki tüm nesneleri / sınıfları / yöntemleri daha iyi anlıyorlar mı?
  • Programları daha verimli mi?
  • Programlarının tasarımı, daha iyi dokümantasyon, işlevler için iyi isim seçimi vb. Açısından çok daha iyi?

Başka bir deyişle, profesyonel bir programcının koduna bakacak olursam, kodlarıyla ilgili benimkine göre ilk fark edeceğim şey nedir? Örneğin Wrox Press'in 'Professional ASP.NET' gibi kitapları okuyorum. O kitaptaki kod örnekleri 'dünya standartlarında' mı? Zirve bu mu? Üst düzey bir programcı bu koda bakar ve bunun iyi bir kod olduğunu düşünür müydü?

Yanıtlar:


131

Aşağıdaki liste kapsamlı değildir, ancak bunlar sorunuzu değerlendirirken düşündüğüm şeylerdir.

  • İyi kod iyi organize edilmiştir. Sınıflardaki veriler ve işlemler birbirine uyar. Sınıflar arasında gereksiz bağımlılıklar yoktur. "Spagetti" ye benzemiyor.

  • İyi kod yorumları, neyin yapılmadığını neden işlerin yapıldığını açıklar. Kodun kendisi ne yapıldığını açıklıyor. Yorum ihtiyacı asgari düzeyde olmalıdır.

  • İyi kod, en geçici nesneler hariç tümü için anlamlı adlandırma kuralları kullanır. bir şeyin adı, nesnenin ne zaman ve nasıl kullanılacağı konusunda bilgi vericidir.

  • İyi kod iyi test edilmiştir. Testler, kodun çalıştırılabilir bir özelliği ve kullanım örnekleri olarak hizmet eder.

  • İyi kod "akıllı" değildir. İşleri basit, açık yollarla yapar.

  • İyi kod, küçük, okunması kolay hesaplama birimleriyle geliştirilmiştir. Bu birimler kod boyunca yeniden kullanılır.

Henüz okumadım ama bu konuda okumayı planladığım kitap Robert C. Martin tarafından yazılan Clean Code .


9
Çok güzel noktalar. Özellikle "iyi kod akıllı değildir" ifadesini seviyorum. Başkalarının okunabilir ve sürdürülebilir bulduğu kod yazmak son derece zordur. Kimsenin anlamadığı "köpek kahvaltısı" kodunu yazmak (bir süre sonra kendiniz de dahil olmak üzere) dünyadaki en kolay şeydir.
Stein Åsmul 01

3
İyi kod "akıllı" değildir. İşleri basit, açık yollarla yapar. en iyi bölüm
nawfal

2
Martin'in Temiz Kodu mükemmel bir kitaptır. En temelde, iyi programlama sadece iyi yazmadır. Bu çılgınca gelebilir, ancak Orwell'in "Politics and the English Language" kitabını okumanızı tavsiye ederim . Çok kısa ama Orwell'in gözlemleri ile Martin gibi insanların yazıları arasında pek çok örtüşme göreceksiniz. Öyleyse Martin gibi insanların harika yazarlar olduğu kadar harika programcılar olması şaşırtıcı değil.
0x1mason

@tvanfosson Kitabı şimdiye kadar okudunuz mu? :-)
Natan Streppel

O kitaptan çok şey öğrendim ve okumak sıkıcı değil.
reggie

94

Fark edeceğiniz ilk şey, kodlarının tutarlı bir kodlama stilini takip etmesidir . Her zaman yapı bloklarını aynı, dini olarak girintili yazarlar ve uygun olan yerlerde yorum yaparlar.

Fark edeceğiniz ikinci şey, kodlarının en fazla birkaç düzine satırı kapsayan küçük yöntemlere / işlevlere bölünmesidir. Ayrıca kendi kendini tanımlayan yöntem adlarını kullanırlar ve genellikle kodları çok okunabilirdir.

Kodu biraz karıştırdıktan sonra fark edeceğiniz üçüncü şey, mantığın takip edilmesi, değiştirilmesinin kolay ve bu nedenle de bakımı kolay olmasıdır.

Bundan sonra, kod mimarilerini oluştururken aldıkları belirli seçimleri anlamak için yazılım tasarım tekniklerinde biraz bilgi ve deneyime ihtiyacınız olacak.

Kitaplarla ilgili olarak, kodun "birinci sınıf" olarak kabul edilebileceği pek çok kitap görmedim. Kitaplarda çoğunlukla basit örnekler sunmaya çalışırlar, bu çok basit problemleri çözmekle ilgili olabilir, ancak daha karmaşık durumları yansıtmaz.


1
Çok etkili bir şekilde özetlemek için +1. Eklenebilecek bir şey daha, çok fazla iç içe daldan kaçınmaktır. Muhtemelen iki seviye kabul edilebilir, bundan sonra takip edilmesi çok zor hale gelir.
Naveen

Haklısın.
Eklemeyi

Gerçekten iyi bir özet. Birkaç satır kodla ilgili olarak, yeni başlayanlar için bunun temiz kodun bir SONUCU olduğunu söylemesinin iyi olacağını düşünüyorum, temiz kod elde etmenin bir yolu değil - kendinizi küçük işlevler yazmaya zorlamayın, yapacaksınız yine de tasarımınız örneğin KISS ilkesini takip ediyorsa.
Klaim

Amaç veya sonuç olarak "küçük işlevlere" çok fazla vurgu yapmam. Opak kod sayfaları kadar çok sayıda küçük işlevi takip etmek zordur.
staticsan

1
Bazen kaçınılmaz olsa da, genel olarak uzun yöntemlere baktığımda "bu yöntem çok şey yapmaya çalışıyor mu? Bazı mantık bloklarını anlamlı adlandırılmış yöntemlerle değiştirmeye ne dersiniz?" Böyle yöntemlerin oluşan mantığını bir kerede tüm mantığı sindirmek için çalışmaktan çok daha kolay aşağıdaki inanıyoruz
Eran Galperin

71

Fowler'dan alıntı, okunabilirliği özetleyen:

Herhangi bir aptal, bilgisayarın anlayabileceği bir kod yazabilir.
İyi programcılar, insanların anlayabileceği kodlar yazarlar.

yeterli dedi.


Whoa +1, kısa ve tatlı olduğu için
devsaw

5
Perl'de şimdiye kadar yazılmış tüm kodlar var.
Will I Am

Ne yazarsam LAB ÖĞRETMENİ Asla Anlama: p
Prakash Bala

32

Şahsen, Tim Peters'ın "The Zen of Python" dan alıntı yapmam gerekecek . Python programcılarına kodlarının nasıl görünmesi gerektiğini söyler, ancak temelde tüm kodlar için geçerli olduğunu buldum.

Güzel, çirkin olmaktan iyidir.
Açık, örtük olmaktan daha iyidir.
Basit, karmaşıktan daha iyidir.
Karmaşık, karmaşık olmaktan daha iyidir.
Düz, iç içe geçmekten daha iyidir.
Seyrek yoğun olandan daha iyidir.
Okunabilirlik önemlidir.
Özel durumlar kuralları çiğnemek için yeterince özel değildir.
Pratiklik saflığı yense de.
Hatalar asla sessizce geçmemelidir.
Açıkça susturulmadıkça.
Belirsizlik karşısında, tahmin etme cazibesini reddedin.
Bunu yapmanın bir - ve tercihen sadece bir - açık yolu olmalıdır.
Hollandalı değilseniz bu yol ilk bakışta açık olmayabilir.
Şimdi hiç olmadığı kadar iyi.
Hiçbir zaman daha iyi olmamasına rağmenhemen şimdi.
Uygulamanın açıklanması zorsa, bu kötü bir fikirdir.
Uygulamanın açıklanması kolaysa, iyi bir fikir olabilir.
İsim alanları, harika bir fikir - hadi onlardan daha fazlasını yapalım!


2
Tek sorun "Bunu yapmanın bir - ve tercihen sadece bir - açık yolu olmalıdır." Açık olan yol, büyük ölçüde problem hakkında düşünme şeklinize bağlıdır. Bu, işlevselliğe karşı zorunludur.
grom

"Düz iç içe olmaktan iyidir" çok şüphelidir.
Íhor Mé

16

Kod şiirdir.

Bu mantık noktasından başlayın ve kodun istenen niteliklerinin çoğunu türetebilirsiniz. En önemlisi, kodun yazıldığından çok daha fazla okunduğunu gözlemleyin, dolayısıyla okuyucu için kod yazın. Okuyucu için yeniden yazın, yeniden adlandırın, düzenleyin ve yeniden düzenleyin.

Sonuçta bir takip:

Okuyucu, kod oluşturma tarihinden itibaren n zamanında siz olacaksınız. Okuyucu için kod yazmanın getirisi, n'nin monoton olarak artan bir fonksiyonudur. Kodunuza ilk kez bakan bir okuyucu n == sonsuz ile gösterilir.

Diğer bir deyişle, kodu yazdığınız andan kodu tekrar ziyaret ettiğiniz zamana kadar olan zaman aralığı ne kadar büyük olursa, okuyucu için yazma çabalarınızı o kadar çok takdir edeceksiniz. Ayrıca, kodunuzu teslim ettiğiniz herkes, en önemli husus olarak okuyucu ile yazılan koddan büyük fayda sağlayacaktır.

İkinci bir sonuç:

Okuyucu için dikkate alınmadan yazılan kodun anlaşılması veya kullanılması gereksiz yere zor olabilir. Okuyucu için değerlendirme belirli bir eşiğin altına düştüğünde, okuyucu koddan kodu yeniden yazarak kazanılan değerden daha az değer elde eder. Bu gerçekleştiğinde, önceki kod atılır ve trajik bir şekilde, yeniden yazma sırasında çok fazla çalışma tekrarlanır.

Üçüncü bir sonuç:

Sonuç ikisinin, kötü bir şekilde belgelenmiş kodun ardından zorla yeniden yazmaların olduğu bir kısır döngüde kendini defalarca tekrarladığı bilinmektedir.


Kod söz konusu olduğunda, tam olarak ne demek istediğinin açık olması gerekir. +1, yine de
Rik

Bir zamanlar Richard Gabriel'in programcılara şiir yazımı hakkında konuştuğunu görmüştü. Bağlantı kurmam biraz zaman aldı.
Thorbjørn Ravn Andersen

15

28 yıldır programlama yapıyorum ve bunu cevaplaması zor bir soru buluyorum. Benim için iyi kod tam bir pakettir. Kod, anlamlı değişken ve yöntem isimleriyle temiz bir şekilde yazılmıştır. Kodun amacını açıklayan iyi yerleştirilmiş yorumlar var ve sadece zaten okuyabildiğiniz kodu tekrarlamıyor. Kod, kaynakları israf etmeden, olması gerekeni verimli bir şekilde yapar. Aynı zamanda sürdürülebilirliğe yönelik bir bakış açısıyla yazılmalıdır.

Sonuç olarak, farklı insanlar için farklı şeyler ifade ediyor olmasıdır. Başka birinin nefret edebileceği iyi kod olarak etiketleyebileceğim bir şey. İyi kod, yukarıda tanımladığımı düşündüğüm bazı ortak özelliklere sahip olacaktır.

Yapabileceğiniz en iyi şey kendinizi kodlamaya maruz bırakmaktır. Başkalarının kodlarına bakın. Açık Kaynak projeleri bunun için iyi bir kaynaktır. İyi kod ve kötü kod bulacaksınız. Ona ne kadar çok bakarsanız, neyin iyi ve kötü kod olduğunu o kadar iyi anlarsınız.

Nihayetinde kendi yargıcın olacaksın. Sevdiğiniz stilleri ve teknikleri bulduğunuzda, zamanla kendi tarzınızı bulacaksınız ve bu zamanla değişecektir. Burada bir asayı sallayıp neyin iyi neyin kötü olduğunu söyleyebilecek kimse yok.



8

Yaklaşık 10 yıldır kendim programlama yapıyorum ve başkalarıyla birlikte çalıştığım için, iyi bir programcı ile ortalama bir programcı kodu arasında hiçbir fark olmadığını söyleyebilirim.

Yetkili seviyedeki tüm programcılar:

  • Doğru Yorum Yapın
  • Etkili Yapı
  • Temiz Belgeleyin

Bir zamanlar bir iş arkadaşımın " Her zaman çok mantıklı ve mantıklı davrandım. Sanırım bu yüzden geliştirmekten zevk alıyorum "

Bence bu, ortalama bir programcının zihnidir. Dünyayı kurallar ve mantık açısından gören ve nihayetinde bir programı tasarlarken ve yazarken bu kurallara uyan kişi.

Uzman programcı, kuralları ve bağlamlarını da anlar. Bu, nihayetinde uzman bir programcının işareti olan yeni fikirler ve uygulamalar geliştirmelerine yol açar. Programlama nihayetinde bir sanat biçimidir.


Zanaat kadar bir sanat değil.
Thorbjørn Ravn Andersen

Dürüst olmak gerekirse tanımı en çok seviyorum. Süper sert ve hızlı kurallara inanan ve bu kuralların neden yapıldığı ve bazı durumlarda çiğnenmesi gereken büyük resmi görmeyen pek çok geliştirici biliyorum
Lance Bryant

6

Kısaca ifade etmek gerekirse, iyi bir programcının kodu okunabilir ve anlaşılabilir.

Bana göre, iyi bir programcının kodu dilden bağımsızdır ; İyi yazılmış kod, kullanılan programlama dili ne olursa olsun, minimum düşünme ile kısa sürede okunabilir ve anlaşılabilir. Kod ister Java, Python, C ++ veya Haskell'de olsun, iyi yazılmış kod, o dilde programlama bile yapmayan kişiler tarafından anlaşılabilir.

Kodun okunması kolay bazı özellikleri, iyi adlandırılmış yöntemler, "hileler" ve kıvrımlı "optimizasyon" içermeyen, sınıflar, birkaç isim vermek gerekirse iyi tasarlanmışlardır. Diğerlerinin de belirttiği gibi, kodlama stili tutarlı, kısa ve nettir .

Örneğin, geçen gün, Stack Overflow'daki sorulardan birini yanıtlamak için TinyMCE koduna bir göz atıyordum . Benim pek kullanmadığım bir dil olan JavaScript ile yazılmıştır. Yine de, içerdiği kodlama stili ve yorumların yanı sıra kodun kendisinin yapılandırılması nedeniyle oldukça anlaşılırdı ve birkaç dakika içinde kodda gezinebildim.

İyi bir programcının kodunu okuma konusunda benim için oldukça göz açıcı olan bir kitap Güzel Kod'dur . Çeşitli programlama projelerinin yazarları tarafından çeşitli programlama dillerinde yazılmış birçok makaleye sahiptir. Yine de okuduğumda, o dilde hiç programlamamış olmama rağmen yazarın kodunda ne yazdığını anlayabildim.

Belki de aklımızda tutmamız gereken şey, programlamanın sadece bilgisayarla değil , aynı zamanda insanlar için de iletişimle ilgili olduğudur, bu yüzden iyi bir programcının kodu, okuyucuya iletmek istediği fikirleri iletebilen iyi yazılmış bir kitap gibidir. .


Bana göre, iyi bir programcının kodu dilden bağımsızdır +1
nawfal

6
  • Okuması kolay
  • yazması kolay
  • bakımı kolay

diğer her şey telkari


Programcı A için "okunması kolay" ve programcı B için "bakımı kolay" birbiriyle çelişen iki hedeftir, ikisi de asla başarılamaz. Herhangi bir kodlama, iş önceliklerine bağlı olarak bu ikisi arasında uzlaşmayı içerir. Başkaları için okunması kolay bir kod yazmak, onu yazan biri için daha az bakım gerektirir.
alpav

@alpav: Söyledikleriniz, standart altı programcılar için kesinlikle doğrudur, bir yıl içinde hafızası olmayan kendi kodlarını korumak zorunda kalacaklarını bilen orta ve uzman programcılar için DEĞİL, bu nedenle tamamen kolay okunmasını ve kolay okunmasını istiyorlar. sürdürmek. BAŞARILABİLİR ve ben bunu 30 yıldır defalarca yaptım, tamamen yanılıyorsunuz.
14'te kloucks

1
alpav: İkisinin nasıl çeliştiğine dair bir örnek verebilir misiniz? Bana mükemmel bir şekilde uymuş görünüyorlar: okuyamıyorsanız bir şeyi nasıl koruyabilirsiniz?
Ken

5

İyi kod kolayca anlaşılmalıdır.
İyi yorumlanmalıdır.
Zor kısımlar daha da iyi yorumlanmalıdır.


'İyi kod kolayca anlaşılmalı' diyebileceğinizden emin değilim - bazı kodlar çok karmaşık işlevler gerçekleştirir, bu işlevlerin kendileri kolayca anlaşılmaz, bu nedenle anlayamadığınız kodun kötü kod olduğunu hemen takip etmez - bu harika olabilir karmaşık bir kavram üzerinden çalışan kod.
et

Karmaşık, iyi kod akıllı kod olarak kabul edilir mi?
kevindaub

4

İyi kod okunabilir. İyi bir profesyonel programcı tarafından yazılan kodun ilk kez okunduğunda kodun ne yaptığını anlamakta hiç sorun yaşamazsınız.


Maalesef "okunabilir" öznel bir şeydir.
Gewthen

3

Daha sonra herkesin harika önerilerini tekrarlamak yerine, Steve McConnell tarafından yazılan Code Complete kitabını okumanızı önereceğim.

Esasen, hem işlevsellik hem de stil için programlama en iyi uygulamalarıyla dolu bir kitaptır.


2

[Tamamen öznel cevap]
Benim için iyi kod, tıpkı bir resim gibi bir sanat biçimidir. Daha ileri gidebilir ve aslında kodun karakterlerini, renklerini, "biçimini" veya "yapısını" içeren ve tüm bunların çok okunabilir / performans gösteren bir çizim olduğunu söyleyebilirim. Okunabilirlik, yapı (yani sütunlar, girinti, hatta aynı uzunluktaki değişken isimler!), Renk (sınıf isimleri, değişken isimleri, yorumlar, vb.) Kombinasyonu, görmeyi sevdiğim şeyi yapabilen "güzel" bir resim yapar. beni ya çok gururlandırıyor ya da kendi kodumdan çok nefret ediyor.

(Daha önce de belirtildiği gibi, çok öznel bir cevap. İngilizcem için üzgünüm.)


2

Bob Martin'in "Temiz Kod" un tavsiyesini destekliyorum.

"Güzel Kod" birkaç yıl önce çok beğenildi.

McConnell'in kitaplarından herhangi biri okumaya değer.

Belki "Pragmatik Programcı" da yardımcı olabilir.

%


2

Sadece 2 sentimi eklemek istedim ... kodunuza yorumlar - ve genel olarak kodunuzun kendisi - kodunuzun ne yaptığını, şimdi nasıl yaptığını söylemelidir. Diğer kodu çağıran kod olan 'istemci' kodu kavramına sahip olduğunuzda (en basit örnek, bir yöntemi çağıran koddur), kodunuzu "müşterinin" bakış açısından anlaşılır kılma konusunda her zaman en çok endişelenmelisiniz. Kodunuz büyüdükçe, bunun ... uh, iyi olduğunu göreceksiniz.

İyi kodla ilgili diğer birçok şey, yapacağınız zihinsel sıçramalarla ilgilidir (kesinlikle, dikkat ederseniz) ... Bunların% 99'u, size tonlarca şeyden kurtulmak için şimdi biraz daha fazla daha sonra çalışın ve yeniden kullanılabilirlik. Ve aynı zamanda işleri doğru yapmakla: Normal ifadeler kullanmak yerine neredeyse her zaman başka şekilde koşmak isterim, ancak bunlara her girdiğimde, çalıştığım her dilde herkesin bunları neden kullandığını anlıyorum (bunlar abartılı, ama iş ve muhtemelen daha iyi olamazdı).

Kitaplara bakıp bakmamaya gelince, tecrübelerime göre kesinlikle hayır diyebilirim . API'lere, çerçevelere, kod kurallarına ve diğer kişilerin kodlarına bakın ve kendi içgüdülerinizi kullanın ve nesnelerin neden böyle olduğunu ve şeylerin etkilerinin ne olduğunu anlamaya çalışın. Kitaplarda kodlamanın neredeyse hiçbir zaman yapmadığı şey, planlanmamış olanı planlamaktır, bu da hata kontrolüyle ilgilidir. Bu yalnızca, birisi size bir e-posta gönderip "Hey, uygulama bozuldu, yo" yerine "321 hatası aldım" dediğinde işe yarar.

İyi kod, hem programcının hem de kullanıcının bakış açısından gelecek düşünülerek yazılır.


1

Bu, Fowler'ın "Yeniden Düzenleme" adlı kitabında oldukça iyi yanıtlanmış, kitap boyunca anlattığı tüm "kokuların" yokluğu.


1

"Profesyonel ASP.NET" i görmedim, ancak tamamdan daha iyi olursa şaşırırdım. Gerçekten iyi kodlara sahip bazı kitaplar için bu soruya bakın . (Elbette değişir, ancak orada kabul edilen cevabı yenmek zor.)


1

Bu bir SSS gibi görünüyor (olmalı). Orada bir ACM makale son zamanlarda güzel kodla ilgili. Okunması / anlaşılması kolay üzerinde çok fazla vurgu var gibi görünüyor. Bunu "alan uzmanları tarafından okunması / anlaşılması kolay" olarak nitelendirirdim. Gerçekten iyi programcılar, herhangi bir problem için en iyi algoritmaları (saf, anlaşılması kolay O (n ^ 2) algoritmaları yerine) kullanma eğilimindedir; algoritmaya aşina değilseniz, iyi olsa bile takip etmesi zor olabilir. programcı, algoritmaya bir referans verir.

İyi programcılar dahil hiç kimse mükemmel değildir, ancak kodları şunun için çaba gösterir :

  1. Kanıtlanmış algoritmalarla doğruluk ve verimlilik (naif ve anlık hackler yerine)
  2. Netlik (önemsiz olmayan algoritmalara referansla niyet için açıklama)
  3. Temel bilgileri (kodlama kuralı, sürüm oluşturma, dokümantasyon, birim testleri vb.) Kapsayacak eksiksizlik
  4. Kısa ve öz (KURU)
  5. Sağlamlık (keyfi girdilere dirençli ve değişiklik taleplerinin kesintiye uğraması)


1

Jeff Atwood, kodlayıcıların nasıl Daktiloların ilk referansı olduğuna dair güzel bir makale yazdı: http://www.codinghorror.com/blog/archives/001188.html

Bir daktilo olarak çalışmanızda her zaman zarif olmanız gerekir, yapısal ve düzgün bir "gramer" sahibi olmak son derece önemlidir. Şimdi bunu "programlama" tipine dönüştürmek aynı sonucu verecektir.

Yapısı

Yorumlar

Bölgeler

Ben bir yazılım mühendisiyim, yani eğitimim sırasında birçok farklı dille karşılaştım ancak programlamam her zaman aynı "hissettiriyor", fekberg.wordpress.com'daki yazımla olduğu gibi, yazmak için "özel" bir yolum var.

Şimdi farklı uygulamaları programlama ve Java, C #, Assembler, C ++, C gibi farklı dillerde sevdiğim yazma "standardına" geldim.

Her şeyi "kutular" veya bölgeler olarak görüyorum ve her bölgenin açıklamaları var. Bir bölge "sınıf Kişi" olabilir ve bu Bölgenin içinde, "Erişim Yöntemleri" veya benzeri diyebileceğim özellikler için birkaç yöntemim var ve her özellik ve bölgenin kendi açıklayıcı açıklamaları var.

Bu çok önemli, bir API yapısı oluştururken yaptığım kodumu her zaman "bir api'nin parçası olarak" görüyorum ve zarafet ÇOK önemli.

Bunun hakkında düşün. Ayrıca Communication issues when adapting outsourcing, kabaca, kodun ne kadar kötü çatışabileceğini açıklayan makalemi okuyun, istediğiniz gibi Enterpret: http://fekberg.wordpress.com/2008/12/14/communication-issues-when-adapting-outsourcing/


0

İyi kodun anlaşılması, bakımı ve eklenmesi kolaydır. İdeal olarak, diğer göstergelerden ödün vermeden olabildiğince etkilidir.


0

Benim için harika kod, kavranması basit ama karmaşık bir şey. Sizi harekete geçiren şeyler, "vay, tabi ki, neden ben öyle düşünmedim?" Gerçekten iyi kodun anlaşılması zor değildir, sadece eldeki problemi doğrudan (veya daha basitse özyinelemeli bir şekilde) çözer.


0

İyi kod, yöntemin adından ne yaptığını bildiğiniz yerdir. Kötü kod, adı anlamlandırmak için kodun ne yaptığını çözmeniz gereken yerdir.

İyi kod, eğer onu okursanız, ne yaptığını okumak için gerekenden çok daha fazla sürede anlayamayacağınız yerdir. Kötü kod, ne işe yaradığını anlamaya çalışırken, ona çağlar boyunca baktığınız yerdir.

İyi kod, önemsiz yorumları gereksiz kılacak şekilde adlandırılmış şeylere sahiptir.

İyi kod kısa olma eğilimindedir.

İyi kod, amacıyla gerçekten alakası olmayan şeylere dayanmadığından, başka herhangi bir yerde yaptığı şeyi yapmak için yeniden kullanılabilir.

İyi kod, genellikle basit işleri yapmak için kullanılan bir dizi basit araçtır (daha karmaşık işler yapmak için iyi organize edilmiş yollarla bir araya getirilir). Kötü kod, kırılması kolay ve kullanımı zor olan devasa çok amaçlı araçlar olma eğilimindedir.


0

Kod, bir programcının becerilerinin ve zihniyetinin bir yansımasıdır. İyi programcılar her zaman geleceğe bakarlar - gereksinimler veya koşullar tam olarak bugün olduğu gibi olmadığında kodun nasıl işleyeceği. Ne kadar pul pul olacak? Bu kodu koruyan ben olmadığımda ne kadar uygun olur? Kod ne kadar yeniden kullanılabilir olacak, böylece benzer şeyler yapan başka biri kodu yeniden kullanabilir ve bir daha yazmayabilir. Ya bir başkası yazdığım kodu anlamaya çalıştığında.

Bir programcı bu zihniyete sahip olduğunda, diğer tüm şeyler güzelce yerine oturur.

Not: Bir kod tabanı üzerinde zaman içinde birçok programcı tarafından çalışılır ve tipik olarak bir programcıya özel bir kod tabanı ataması yoktur. Dolayısıyla, iyi bir kod, şirketin tüm standartlarının ve işgücünün kalitesinin bir yansımasıdır.


0

(Aşağıda "o" kelimesini kullanıyorum çünkü olmayı arzuladığım kişi bu , bazen başarı ile).

İyi bir programcının felsefesinin özünün her zaman şöyle düşünmesi olduğuna inanıyorum: "Gelecekte bu görev hakkında her şeyi unuttuğumda kendime kod yazıyorum, neden üzerinde çalışıyordum, riskler nelerdi ve hatta bunun nasıldı? kodun çalışması gerekiyordu. "

Bu nedenle, kodu:

  1. Çalışın (kodun ne kadar hızlı yanlış cevaba ulaştığı önemli değildir. Gerçek dünyada kısmi bir itibar yoktur).
  2. Bu kodun çalıştığını nasıl bildiğini açıklayın. Bu, dokümantasyon (javadoc benim tercih ettiğim araçtır), istisna işleme ve test kodunun bir kombinasyonudur. Çok gerçek anlamda, satır için satır, test kodunun işlevsel koddan daha değerli olduğuna inanıyorum, "bu kod çalışıyor, bu şekilde kullanılmalı ve bu yüzden almalıyım ödenmiş. "
  3. Bakım olun. Ölü kod bir kabustur. Eski kod bakımı bir zahmettir ancak yapılması gerekir (ve unutmayın, masanızdan çıktığı anda "miras" olur).

Öte yandan, iyi bir programcının şu şeyleri asla yapmaması gerektiğine inanıyorum:

  1. Biçimlendirmeye karşı takıntılı olun. Kodu tam olarak uygun olduğunu düşündüğünüz standart veya kişisel tercihe göre biçimlendirebilen çok sayıda IDE, düzenleyici ve güzel yazıcı vardır. Netbeans kullanıyorum, format seçeneklerini bir kez ayarlıyorum ve ara sıra alt-shift-F tuşuna basıyorum. Kodun nasıl görünmesini istediğinize karar verin, ortamınızı ayarlayın ve aracın homurdanan işi yapmasına izin verin.
  2. İnsan iletişimi pahasına adlandırma kurallarını saplantı haline getirin. Bir adlandırma kuralı sizi sınıflarınızı "Zookeeper" yerine "IElephantProviderSupportAbstractManagerSupport" olarak adlandırmaya yönlendiriyorsa, bir sonraki kişi için zorlaştırmadan önce standardı değiştirin.
  3. Gerçek insanlarla bir ekip olarak çalıştığını unutun.
  4. Kodlama hatalarının birincil kaynağının şu anda klavyesinde olduğunu unutun. Bir hata veya hata varsa, önce kendine bakmalıdır.
  5. Etrafta dolaşanların geldiğini unutun. Kodunu gelecekteki okuyucular için daha erişilebilir hale getirmek için şimdi yaptığı herhangi bir çalışma, neredeyse kesinlikle doğrudan ona fayda sağlayacaktır (çünkü koduna bakması istenen ilk kişi kim olacak? O öyle).

@Ken, ho ho, zekanız beni kör etti efendim. Şimdi gözlük takma: 8-p
Bob Cross

0
  1. İşe yarıyor
  2. Çalıştığını kanıtlayan birim testleri vardır

Gerisi buzlanma ...


0
  • En iyi kod, onu görür görmez tanıyacağınız belli bir zarafete sahiptir.
  • Ayrıntılara özen gösterilerek hazırlanmış görünüyor. Belli ki yetenekli biriyle üretildi ve bu konuda bir sanatı var - kaba ve hazır olmaktan ziyade yontulmuş ve cilalı göründüğünü söyleyebilirsin.
  • Tutarlıdır ve kolayca okur.
  • Her biri tek bir şey yapan ve onu iyi yapan küçük, oldukça uyumlu işlevlere bölünmüştür.
  • Minimal birleşmiş, yani bağımlılıklar azdır ve sıkı bir şekilde kontrol edilir, genellikle ...
  • İşlevlerin ve sınıfların uygulamalardan çok soyutlamalara bağımlılıkları vardır .

0

İronik bir şekilde, programcı ne kadar iyi olursa , o kadar az vazgeçilmez hale gelir, çünkü üretilen kod herkes tarafından daha iyi korunabilir (Eran Galperin'in genel izniyle belirtildiği gibi).

Deneyimlerim bunun tersinin de doğru olduğunu söylüyor. Kötü programcı daha zor korumak için bu yüzden onun / onu kodudur daha vazgeçilmez başka hiçbir ruh üretilen bilmeceler anlayabilir, çünkü o / o olur.


0

Güzel bir örneğim var:

GWT (google web aldı) Kaynak kodunu okuyun, her aptalın bunu anladığını göreceksiniz (bazı İngilizce kitapları okumak bu koddan daha zordur).

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.