Facebook Pixel
Searching...
Türkçe
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Clean Code

Clean Code

A Handbook of Agile Software Craftsmanship
tarafından Robert C. Martin 2008 464 sayfa
4.37
22k+ değerlendirmeler
Programming
Computer Science
Technology
Dinle

Anahtar Çıkarım

1. Okunabilir ve sürdürülebilir temiz kod yazın

Kod kalitesinin tek geçerli ölçüsü: Dakikada kaç tane "Bu da ne?" dediğinizdir.

Okunabilirlik önceliklidir. Temiz kod, diğer geliştiriciler tarafından kolayca anlaşılabilir olmalıdır. Basit, zarif ve dağınıklıktan uzak olmalıdır. Kapsamlı yorumlara ihtiyaç duymadan amacını açıkça ifade eden kod yazmaya çalışın. Anlamlı değişken ve fonksiyon isimleri kullanın, fonksiyonları küçük ve odaklanmış tutun ve kodu mantıklı bir şekilde organize edin.

Sürdürülebilirlik evrimi mümkün kılar. Değiştirilmesi zor olan kod bir yük haline gelir. Kodunuzu esnek ve modüler olacak şekilde tasarlayın, böylece değişen gereksinimlere uyum sağlayabilir. DRY (Kendini Tekrarlama) ve SOLID gibi prensipleri takip ederek gevşek bağlı, yüksek uyumlu sistemler oluşturun. Davranışı değiştirmeden kod yapısını iyileştirmek için acımasızca yeniden düzenleyin.

Temiz kod karşılığını verir. Temiz kod yazmak başlangıçta daha fazla çaba gerektirse de, uzun vadede önemli ölçüde zaman ve baş ağrısından tasarruf sağlar. Temiz kod, hata ayıklamayı, genişletmeyi ve sürdürmeyi kolaylaştırır. Geliştiricilerin daha verimli çalışmasını sağlar ve değişiklikler sırasında hata yapma riskini azaltır. Temiz kodu geliştirme pratiğinizin temel bir parçası haline getirin.

2. Anlamlı adlandırma kurallarını takip edin

Bir değişkenin, fonksiyonun veya sınıfın adı, tüm büyük soruları yanıtlamalıdır. Neden var olduğunu, ne yaptığını ve nasıl kullanıldığını söylemelidir.

Niyet belirten isimler kullanın. Değişkenlerin, fonksiyonların ve sınıfların amacını ve davranışını açıkça ileten isimler seçin. Tek harfli isimlerden veya anlaşılmaz kısaltmalardan kaçının. Kolayca aranabilir, telaffuz edilebilir isimler kullanın. Örneğin:

  • Kötü: d (gün cinsinden geçen süre)
  • İyi: gecenSureGunCinsinden

Tutarlı ve kesin olun. Kod tabanınızda tutarlı adlandırma kuralları kullanın. Belirsizliği önlemek için kesin olun - örneğin, getAktifHesaplar() ve getAktifHesapBilgisi() gibi anlamlı ayrımlar kullanın. Değer katmayan kodlamalardan veya öneklerden kaçının. Sınıf isimleri isim, metod isimleri fiil olmalıdır.

Ad uzunluğu kapsamla eşleşmelidir. Daha geniş kapsamlı değişkenler ve fonksiyonlar için daha uzun, daha açıklayıcı isimler kullanın. Küçük, yerel kapsamlar için kısa isimler kabul edilebilir. Bir ismin uzunluğu, kullanım kapsamına orantılı olmalıdır. İsmin kullanıldığı bağlamda okunabilirlik ve anlama optimizasyonu yapın.

3. Fonksiyonları küçük ve odaklanmış tutun

Fonksiyonlar tek bir şey yapmalıdır. Bunu iyi yapmalıdır. Sadece bunu yapmalıdır.

Küçük güzeldir. Fonksiyonlar küçük olmalıdır - genellikle 5-10 satır uzunluğunda. Bir ekrana sığmalı ve anında kavranabilir olmalıdır. Uzun, karmaşık fonksiyonlar yazmak yerine, kodu iyi adlandırılmış yardımcı fonksiyonlara ayırın. Küçük fonksiyonlar anlamayı, test etmeyi ve sürdürmeyi kolaylaştırır.

Tek bir şeyi iyi yapın. Her fonksiyonun tek bir, net amacı olmalıdır. Bir fonksiyon birden fazla şey yapıyorsa, bunları ayrı fonksiyonlara ayırın. Bir fonksiyonun çok fazla şey yaptığını gösteren işaretler şunlardır:

  • Birden fazla soyutlama seviyesi
  • Birden fazla bölüm veya kod bloğu
  • Çok sayıda parametre

Tek bir soyutlama seviyesini koruyun. Bir fonksiyon içindeki ifadeler aynı soyutlama seviyesinde olmalıdır. Yüksek seviyeli mantığı düşük seviyeli detaylarla karıştırmayın. Düşük seviyeli işlemleri ayrı fonksiyonlara ayırın. Bu, fonksiyonları odaklanmış ve kavramsal olarak basit tutarak okunabilirliği artırır.

4. Doğru biçimlendirme ve organizasyon uygulayın

Kod biçimlendirme iletişimle ilgilidir ve iletişim profesyonel geliştiricinin ilk işidir.

Tutarlı biçimlendirme önemlidir. Kodunuzda tutarlı girinti, satır sonları ve boşluklar kullanın. Bu, okunabilirliği artırır ve bilişsel yükü azaltır. Ekibinizle biçimlendirme standartları üzerinde anlaşın ve bunları uygulamak için otomatik araçlar kullanın. Ana biçimlendirme yönergeleri şunları içerir:

  • Doğru girinti
  • Tutarlı parantez yerleştirme
  • Mantıklı satır sonları
  • Uygun boşluk

Kodu mantıklı bir şekilde organize edin. İlgili kodu bir araya getirin ve ilgisiz kodu ayırın. Mantıksal bölümler arasında "paragraf" boşlukları oluşturmak için boş satırlar kullanın. İlgili fonksiyonları birbirine yakın yerleştirin. Dosyaları tek bir kavram veya bileşene odaklanmış tutun. Uygun olduğunda büyük dosyaları daha küçük, daha odaklanmış olanlara ayırın.

Standart konvansiyonları takip edin. Diliniz ve topluluğunuz için standart konvansiyonlara uyun. Bu, kodunuzu diğer geliştiriciler için daha tanıdık ve erişilebilir hale getirir. Örneğin, Java'da:

  • Sınıf isimleri PascalCase kullanır
  • Metod isimleri camelCase kullanır
  • Sabitler ALL_CAPS kullanır

5. Bağımlılıkları yönetin ve tekrardan kaçının

Yazılımdaki tüm kötülüklerin kökü tekrarlama olabilir.

Tekrarlamayı ortadan kaldırın. Tekrarlanan kod, soyutlama için kaçırılmış bir fırsattır. Tekrarlama gördüğünüzde, ortak kodu yeniden kullanılabilir bir fonksiyon veya sınıfa ayırın. Bu, mantığı merkezileştirerek ve tutarsız değişiklikler riskini azaltarak sürdürülebilirliği artırır. İzlenecek tekrarlama türleri:

  • Aynı kod blokları
  • Küçük varyasyonlarla benzer algoritmalar
  • Tekrarlanan switch/case veya if/else zincirleri

Bağımlılıkları dikkatlice yönetin. Modüller arasındaki bağımlılıkları en aza indirin ve bağımlılığı azaltın. Kodunuzu daha modüler ve test edilebilir hale getirmek için bağımlılık enjeksiyonu ve kontrol tersine çevirmesi kullanın. Bağımlılık Tersine Çevirme Prensibini takip edin - somutlamalara değil, soyutlamalara bağımlı olun. Bu, kodunuzu daha esnek ve değiştirilmesi daha kolay hale getirir.

En az bilgi ilkesini kullanın. Bir modül, manipüle ettiği nesnelerin iç işleyişini bilmemelidir. Bu, modüller arasındaki bağımlılığı azaltır. Örneğin, Demeter Yasası'nı kullanın - bir metod yalnızca şunlar üzerinde metod çağrısı yapmalıdır:

  • Kendi nesnesi
  • Parametre olarak geçirilen nesneler
  • Oluşturduğu nesneler
  • Doğrudan bileşen nesneleri

6. Hataları zarif bir şekilde yönetin

Hata yönetimi önemlidir, ancak mantığı gizliyorsa yanlıştır.

Hata kodları yerine istisnalar kullanın. İstisnalar daha temizdir ve kodunuzun ana mantığını karıştırmaz. Hata yönetiminin mutlu yoldan ayrılmasına izin verir. İstisnalar kullanırken:

  • Bilgilendirici hata mesajları oluşturun
  • İstisnalarla bağlam sağlayın
  • Çağıranın ihtiyaçlarına göre istisna sınıfları tanımlayın

Null döndürmeyin. Null döndürmek, null işaretçi istisnalarına yol açar ve kodu null kontrolleriyle karıştırır. Bunun yerine:

  • Listeler için null yerine boş koleksiyonlar döndürün
  • Null Nesne desenini kullanın
  • Java'da Optional veya fonksiyonel dillerde Maybe kullanın

Önce try-catch-finally ifadelerini yazın. İstisna atabilecek kod yazarken try-catch-finally ile başlayın. Bu, çağıran kod için kapsam ve beklentileri tanımlamaya yardımcı olur. Hata senaryolarında bile kaynakların düzgün bir şekilde yönetilmesini ve serbest bırakılmasını sağlar.

7. Kapsamlı birim testleri yazın

Test kodu, üretim kodu kadar önemlidir.

TDD'nin üç yasasını takip edin. Test Odaklı Geliştirme (TDD), kod kalitesini ve tasarımını iyileştirir:

  1. Herhangi bir üretim kodu yazmadan önce başarısız bir test yazın
  2. Başarısızlığı göstermek için yalnızca yeterli test yazın
  3. Testi geçmek için yalnızca yeterli üretim kodu yazın

Testleri temiz ve sürdürülebilir tutun. Testlerinize üretim kodunuz kadar yüksek kalite standartları uygulayın. Test kodunu düzenli olarak yeniden düzenleyin ve iyileştirin. İyi yapılandırılmış testler, dokümantasyon işlevi görür ve üretim kodunun korkusuzca yeniden düzenlenmesini sağlar.

Kapsamlı test kapsamı hedefleyin. Sadece mutlu yolu değil, uç durumları, sınır koşullarını ve hata senaryolarını kapsayan testler yazın. Test kapsamındaki boşlukları belirlemek için kod kapsamı araçlarını kullanın. Unutmayın, %100 kapsam hata içermeyen kodu garanti etmez, ancak yeniden düzenleme ve değişikliklerde güven sağlar.

8. Kodu sürekli olarak yeniden düzenleyin

Kamp alanını bulduğunuzdan daha temiz bırakın.

Fırsatçı bir şekilde yeniden düzenleyin. Bir kod parçası üzerinde çalışırken kod yapısını iyileştirin. İzci Kuralını takip edin: kodu bulduğunuzdan daha iyi bırakın. Küçük, kademeli iyileştirmeler zamanla birikir ve kod çürümesini önler. Yaygın yeniden düzenleme teknikleri şunları içerir:

  • Metod veya sınıf çıkarma
  • Açıklık için yeniden adlandırma
  • Karmaşık koşulları basitleştirme
  • Tekrarlamayı kaldırma

Testlerle güvenli bir şekilde yeniden düzenleyin. Yeniden düzenlemeden önce her zaman sağlam bir test paketi bulundurun. Küçük, kademeli değişiklikler yapın ve testleri sık sık çalıştırın. Bu, değişikliklerinizin mevcut işlevselliği bozmadığına dair güven verir. Hataların tanıtılma riskini azaltmak için mevcut olduğunda otomatik yeniden düzenleme araçlarını kullanın.

Yeniden düzenlemeyi değer sunmakla dengeleyin. Sürekli yeniden düzenleme önemli olsa da, ilerlemeyi felç etmesine izin vermeyin. Mükemmeliyet yerine "yeterince iyi" hedefleyin. Yeniden düzenleme çabalarını kodun en sorunlu veya sık değiştirilen alanlarına odaklayın. Sürekli kod iyileştirmesi için destek sağlamak amacıyla yeniden düzenlemenin değerini paydaşlara iletin.

9. Nesne yönelimli ve fonksiyonel programlama ilkelerini uygulayın

Nesneler verilerini soyutlamaların arkasına gizler ve bu veriler üzerinde çalışan fonksiyonları ortaya çıkarır. Veri yapıları verilerini ortaya çıkarır ve anlamlı fonksiyonlara sahip değildir.

Nesne yönelimli ilkeleri akıllıca kullanın. Esnek, modüler tasarımlar oluşturmak için kapsülleme, kalıtım ve çok biçimlilik gibi ilkeleri uygulayın. SOLID ilkelerini takip edin:

  • Tek Sorumluluk İlkesi
  • Açık-Kapalı İlkesi
  • Liskov Yerine Geçme İlkesi
  • Arayüz Ayrımı İlkesi
  • Bağımlılık Tersine Çevirme İlkesi

Fonksiyonel programlama kavramlarından yararlanın. Nesne yönelimli dillerde bile, fonksiyonel programlama teknikleri daha temiz koda yol açabilir:

  • Yan etkisi olmayan saf fonksiyonlar
  • Değişmez veri
  • Yüksek dereceli fonksiyonlar
  • Fonksiyon bileşimi

Sorun için doğru yaklaşımı seçin. Nesne yönelimli ve fonksiyonel paradigmaların her birinin güçlü ve zayıf yönleri vardır. Davranışla karmaşık alanları modellemeniz gerektiğinde nesne yönelimli tasarımı kullanın. Veri dönüşümü ve işleme hatları için fonksiyonel yaklaşımlar kullanın. Birçok modern dil, sisteminizin her parçası için en iyi aracı kullanmanıza olanak tanıyan hibrit bir yaklaşımı destekler.

10. Eşzamanlılığı dikkatlice düşünün

Eşzamanlılık bir ayrıştırma stratejisidir. Ne yapıldığını ne zaman yapıldığından ayırmamıza yardımcı olur.

Eşzamanlılık zorluklarını anlayın. Eşzamanlı programlama karmaşıklık ve ince hatalar için potansiyel getirir. Yaygın sorunlar şunları içerir:

  • Yarış koşulları
  • Kilitlenmeler
  • Kaçırılan sinyaller
  • Bellek görünürlüğü sorunları

Eşzamanlılıkla ilgili endişeleri ayırın. Eşzamanlılıkla ilgili kodunuzu diğer kodlardan ayrı tutun. Bu, mantık yürütmeyi ve test etmeyi kolaylaştırır. Eşzamanlılığı yönetmek için ham iş parçacıklarıyla çalışmak yerine Yürütücüler, Gelecekler ve Aktörler gibi soyutlamalar kullanın.

Değişmezlik ve saf fonksiyonları tercih edin. Değişmez nesneler ve saf fonksiyonlar doğası gereği iş parçacığı güvenlidir. Paylaşılan değişken durumu önleyerek birçok eşzamanlılık sorununu ortadan kaldırırlar. Değişken durum gerekli olduğunda, uygun senkronizasyon tekniklerini kullanın ve atomik değişkenler veya eşzamanlı koleksiyonlar kullanmayı düşünün.

Son güncelleme::

İncelemeler

4.37 üzerinden 5
Ortalama 22k+ Goodreads ve Amazon'dan gelen derecelendirmeler.

Clean Code, okunabilir ve sürdürülebilir kod yazma ilkeleriyle genellikle olumlu eleştiriler alıyor. Okuyucular, isimlendirme, fonksiyonlar ve test etme konularındaki pratik tavsiyeleri takdir ediyor. Kitabın Java odaklı olması ve bazı aşırı katı yönergeler yaygın eleştiriler arasında yer alıyor. Birçok kişi, geliştiriciler için vazgeçilmez bir okuma olarak değerlendirirken, bazıları deneyimli programcılar için daha az faydalı buluyor. Vaka çalışmaları ve yeniden yapılandırma örnekleri bazıları tarafından övülürken, diğerleri tarafından abartılı bulunuyor. Genel olarak, eleştirmenler kitabın kod kalitesi üzerine değerli içgörüler sunduğunda hemfikir, ancak tüm önerilerin evrensel olarak uygulanabilir olmadığını belirtiyorlar.

Yazar Hakkında

Robert Cecil Martin, amca Bob olarak bilinir, tanınmış bir yazılım mühendisi ve danışmandır. Agile geliştirme yöntemlerini savunur ve Object Mentor Inc.'in başkanıdır. Martin'in uzmanlık alanları Nesne Yönelimli Tasarım, Kalıplar, UML ve eXtreme Programming'i kapsar. Dünya çapında müşterilerle çalışarak, danışmanlık ve konuşma etkinlikleri aracılığıyla bilgisini paylaşmıştır. Martin, 1996'dan 1999'a kadar C++ Report'un baş editörlüğünü yapmıştır. Yazılım geliştirme topluluğunda önde gelen bir figür olup, uluslararası konferanslar ve ticaret fuarlarında sıkça sunum yapmaktadır. Etkisi, yazılım zanaatkârlığı ve en iyi uygulamalar üzerine yazdığı kitaplar ve makaleler aracılığıyla danışmanlık çalışmalarının ötesine uzanır.

0:00
-0:00
1x
Dan
Scarlett
Adam
Amy
Liv
Emma
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Oct 30,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance