"Kod Temizliği": 5 temel nokta

Tam metin 3257 Kelimeler, tahmini öğrenme süresi 10 dakika

Kaynak: Pexels

Yorum alanında, genellikle Robert C. Martin'in "Temiz Kodunu" öneren arkadaşlar vardır. Bugün bu kitaba bir göz atacağız, bakmaya değer mi?

Bu kitap hakkında

"Kod Temizlemenin Yolu" 2008'de yayınlandı ve son yıllarda "Amazon'un en çok satan beş kitabından" biri olarak listelendi. Bu kitabın yazarı sevgiyle "Bob Amca" olarak anılıyor ve aynı zamanda "Çevik Manifesto" nun çok zengin niteliklere sahip orijinal yazarlarından biridir. Kitabın Goodreads'te ortalama puanı 4,4'tür (13.000'den fazla derecelendirme). Bunun programcılar için okunması gereken bir şey olduğu söylenebilir.

Bu makale kitabı beş ana noktaya yoğunlaştırıyor.

1. Soyutlamaya saygı gösterin

Resim: soyutlama (soyut) Resim kaynağı: Abstruse Goose

"Kod Temizliği" yazdı: Bir işlevin yalnızca bir şey yapmasını sağlamak istiyorsanız, her işlevin ifadelerinin aynı soyutlama düzeyinde olduğundan emin olmanız gerekir.

Bu noktayı açıklamak için Martin aşağıdaki örneği kullanır (FitNesse'den):

public String render (), Exception {StringBuffer html = new StringBuffer (" < hr "); if (boyut > 0) html.append ("size =" "). Append (size + 1) .append (" \ ""); html.append (" > "); return html.toString ();}

No_abstraction.java kaynak kodunu GitHub'da görüntüleyin

Burada en az iki soyutlama düzeyi karıştırılır. Birincisi, sabit boyutlu hr etiketlerinin yüksek seviyeli kavramı ve ikincisi, gerçek etiket yapısıyla ilgilenen düşük seviyeli sözdizimi ayrıntılarıdır. Bu noktayı açıklamak için, kodu aşağıdaki gibi daha net bir şekilde yeniden düzenleyin:

public String render (), Exception {HtmlTag hr = new HtmlTag ("hr"); if (extraDashes > 0) hr.addAttribute ("size", hrSize (extraDahses)); return hr.html ();} private String hrSize (int height) {int hrSize = height +1; return String.format ("% d", hrSize );}

Abstraction.java kaynak kodunu GitHub'da görüntüleyin

Not:

· Render () işlevi artık yalnızca hr etiketleri oluşturmaktan sorumlu

· Etiketin temeldeki ayrıntılı bilgilerini oluşturma görevini HtmlTag modülüne aktarın

· Boyut biçimi bağımsız bir işlev olarak özetlenmiştir

Martin inanıyor:

"Soyutlama düzeylerinin ayrılması, yeniden düzenlemenin en önemli işlevlerinden biridir ve ulaşılması en zor işlevlerden biridir."

Tabii ki, gelecekteki kodda daha fazla düşüneceğim.

2. Temiz kod, kurallarla ilgilidir ve çok çaba gerektirir

Bu makalenin sadece temiz kod yazmanın noktalarını ve kurallarını listelemesini istemiyorum. Bu kitap için bunun da pek faydası yok - çünkü dogmatik öğretim yöntemleri yeterli olmaktan uzak.

Aksine, bu kitapta Martin, güçlü bir kişisel ilkeler duygusunun geliştirilmesini istiyor ve "kirli kodu" temizlemek için gereken çaba ve sorumlulukları açıklamaya devam ediyor. Bu kitap buna "kod mantığı" diyor ve "kesinlikle temiz kod almayı zorlaştıran birçok numara kullanma" gerektiriyor.

"Temiz kod, bir dizi kurala göre yazılmaz. Bir dizi altın kuralı öğrenerek bir yazılım ustası olmak imkansızdır. Profesyonellik ve ustalık, kuralların oluşumunu destekleyen değerden gelir." - Robert C. Martin (Robert C. Martin)

Şahsen ben pek güvenmiyorum, bu yüzden bu ifadeyi seviyorum. Bob Amca bile kod yazmanın ciddi bir öz disiplin gerektiren bir iş olduğuna inanıyor ve çok fazla enerji gerektiriyor ki bu büyük bir rahatlık. Temiz kodda gerçekten iyi olmak için, programcılar ve kod geliştirme olarak kişisel gelişimimizi yinelemeliyiz.

Kaynak: Pexels

3. Kodu olabildiğince basit tutun

"Bir fonksiyonun ilk kuralı küçük olmaktır. İkinci kural, onu olabildiğince küçük yapmaktır." - Robert C. Martin

Burada iki anlam var:

· İşlevin kendisi kısa olmalıdır - neredeyse 20 satırdan fazla olmamalıdır, çoğu durumda 10 satırdan az

· Fonksiyonlar mümkün olduğu kadar parametre almamalıdır

Kısa işlevler kod okunabilirliğini artırabilir. Bu aynı zamanda bizi tek ve verimli fonksiyonlar yazma eğiliminde yapar.

Dersler için benzer görüşlere sahip. Sınıfın büyüklüğünü ölçmek için "kod satırı" yerine "sorumluluk" kullanılmasını önerdi. Yani bir sınıfın yalnızca bir sorumluluğu olmalıdır. Bu sözde "Tek Sorumluluk İlkesi" (SRP) 'dir.

Kodu kısa tutmak bir "bölümleme" stratejisidir. Büyük bir dosya çok fazla uzun ve karmaşık kod içeriyorsa, dosyayı birden çok modüle bölebilir, modülleri birden çok işleve bölebilir ve ardından işlevleri birden çok alt işleve bölebilirsiniz. Kod mantığını ve görevleri görene kadar.

4. Programlama ustalıktır

Genelde programlamaya mimari ve inşaat olarak atıfta bulunmanın uygunsuz olduğunu düşünüyorum. Çünkü programcılar tam bir tasarım yapamazlar, temeli sıfırdan inşa edemezler ve onu adım adım tamamlayamazlar.

Programlama adımları şunlardır: önce bir taslak çizin ve ardından tekrar tekrar ayrıntıları ekleyin. Programcının yapması gereken şey değiştirmek, iyileştirmek ve genişletmektir - bunların tümü, yazılım gereksinimleri karşılayana kadar çeşitli soyutlama seviyelerinde yapılır. Ve yazılım asla gerçekten tamamlanmayacak.

Bu, "Kod Temizliği" nin ana fikridir. Kitap boyunca ana nokta şudur: yazılım bir sanattır ve yazılım yapmak "çizmek" gibidir. Yazar, programlamanın özünün bir zanaat olduğuna inanıyor.

Resim: "İyi Kod" Web sitesi: xkcd

Ama programlamayı sadece kod yazmaktan "zanaat" e nasıl değiştirebiliriz?

Martin, programcıların sahip olduğu ana araçların sürekli yeniden düzenleme ve test odaklı geliştirme (TDD) olduğuna inanıyor. İkisi bir madalyonun iki yüzü gibi birlikte çalışır. Bazı kavramlara bakın:

Yeniden düzenleme, çıktıyı değiştirmeden mevcut bilgisayar kodunun yapısını ayarlama işlemidir.

Test odaklı geliştirme, gereksinimleri belirli test senaryolarına dönüştürme ve testi geçmesi için kod ekleme sürecidir.

Bu nedenle, yazılım yapma süreci şöyle görünebilir:

1. Gerekli ancak uygulanmayan işlevselliği doğrulamak için test kodunu yazın.

2. Geçerli bir kod yazın (düzensiz olabilir) ve testi geçin.

3. Her geliştirme yinelemesinde kodu daha net hale getirmek için kodu kademeli olarak yeniden düzenleyin (her seferinde testi geçmeyi garanti edin).

"Tek seferlik programlamadan sonra sistemin doğru ve güzel çalışabileceğini düşünmeyin. Bugünün görevi sadece programı çalıştırmaktır ve sistemi yeniden düzenlemek ve genişletmek yarının görevleridir. Bu, yinelemenin ve artan çevikliğin özüdür."

--Robert C. Martin

Bu nedenle, bu kitabın ana fikri, temiz kodun sadece tek seferde yaratılmak yerine, geliştirme ve uygulamada elde edilmesidir.

Kaynak: Pexels

5. Kodun kendisi açık ve okunması kolay

Az yorum içeren açık, ifade edici kod, birçok yorum içeren kaotik ve karmaşık koddan daha iyidir. "-Robert C. Martin

Martin, "Yorumlar, anlamlı adlandırma ve biçimlendirme" bölümünde, kodun kendisinin açık ve okunması kolay olması gerektiğini şiddetle savundu. Misal:

// Çalışanın tam haklardan yararlanıp yararlanmadığını kontrol edin ((Employee.flags ve HOURLY_FLAG) (Employee.age) > 65))

Şu şekilde yeniden düzenleyin:

if (employee.isEligibleForFullBenefits ())

Not:

· Yorumları silin

· Bir yöntemde kapsüllenmiş koşullu mantık

Bağımsız işlevler yerine yöntemler kullandığınız için, sıfır parametrelerini çağıran yöntemler oluşturmak için örnek değişkenleri kullanabilirsiniz.

· Sorumluluklarını daha net hale getirmek için yönteme açıklayıcı bir ad verin

"Kod Temizliği", esasen Tim Ottinger kurallarının ayrıntılı bir açıklaması olan adlandırma hakkında tam bir bölüme sahiptir. Dahil etmek:

· Okunabilir bir ad ayarlayın - örneğin, in days yerine int elapsedTimeInDays

· Okunabilen bir ad kullanın - örneğin, DtaRcrd102 yerine müşteri

· Kodlamadan kaçının - "üyeler" için m_ ön ekini kullanmayın ve Macarca gösterimi kullanmayın

· Her kavram bir kelimeye karşılık gelir - getirme, geri getirme, bir kelimeye karşılık gelen birden fazla kavramı alma

Sonuç

"Kodu Temizlemenin Yolu" nda her fikir Bob Amca tarafından önerilmedi, kitabın her bölümünde bunu kabul etti. Bu kitabın bu kadar başarılı olmasının bir nedeni de bu - örneklerle birlikte programlama dünyasından bir bilgelik toplaması.

Küçük bir kusur varsa, düşük seviyeli ayrıntılarla ilgili bölümlerin, üst düzey kavramlarla ilgili bölümlerden daha az olmasıdır. "Sistem" bölümü yalnızca 13 sayfadır, "Yorum" bölümünün yalnızca yarısıdır. Bununla birlikte, sistem üzerindeki vurguyu azaltmanın, tartışmayı daha sonraki kitabı "Temiz Mimari" de sürdürmek olduğundan şüpheleniyorum.

Her şey düşünüldüğünde, bu gerçekten şu anda en iyi programlama kitaplarından biri ve bunu 2021 kitap listeme koyacağım.

Yorum Beğen Takip Et

Yapay zeka öğrenme ve geliştirmenin kuru mallarını paylaşalım

Yeniden yazdırıyorsanız, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma şartnamelerine uyun

uyarı! Fareniz web sitesi tarafından izlendi
önceki
Uluslararası toplum, Çin'in savaş "salgınına" dikkat ediyor: Çin, dünyaya zaman kazandırdı
Sonraki
JS körü körüne kullanmayın ===
İzleyiciler, büyük şirketlerin yapay zekayı tam olarak nasıl kullandığını ve bunları pratikte nasıl uyguladığını izliyor mu?
Sincan'ın "salgın" rolündeki ön ve arka Jinhua doktorlarını hesaba katarak çevrimiçi ve çevrimdışı koordinasyon
Bilim ve Teknoloji Gençlik | Zhang Shifeng, Çin Bilimler Akademisi: Geç başlayın, yetişin ve yararlı bir kişi olmak için çabalayın
Çocuğunuza bir isim verin ve bir bebek adı oluşturucu oluşturmak için derin öğrenme teknolojisini kullanın
Sadece 6 ayda bir kodlama noobundan veri bilimcisine geçtim
"Naihe 2" Liu Jiaxi makyajsız göründü ve gülümsemesi hayranları tarafından övüldü
Weimob'un veritabanının silinmesini telafi etmesi 145 saat sürdü ve 150 milyon yuan kan kaybına neden oldu.
Yuhang A seviyesindeki manzara noktası, ülkedeki en güzel "retrograd" a ücretsiz olarak açıktır.
200 milyon Fransız süperstar paniğe kapılacak! 15 yaşındaki Dortmund, "gol makinesi" oldu ve 19 turda 32 gol attı
Makine çevirisinde öncü olan Jaime Carbonell vefat etti ve Carnegie Mellon Üniversitesi Dil Teknolojisi Okulu'nu kurdu.
Serin VR koltuk seçimi, Ali Damai'nin arkasındaki teknoloji lüks
To Top