Hızlı Özet (TL;DR)
Kötü yazılmış bir kod ilk başta hızlı teslim edilse de, zamanla yeni özellik eklemeyi imkânsız kılan bir “teknik borç bataklığına” dönüşür. Clean Code (Temiz Kod); kodun başka bir geliştirici tarafından roman gibi kolayca okunabilmesini amaçlar. Robert C. Martin tarafından derlenen SOLID prensipleri ise nesne yönelimli sistemlerde esnek, gevşek bağlı (loosely coupled) ve test edilebilir bir mimari kurmanın 5 temel dayanağıdır.
SOLID Prensipleri Özeti
Kurumsal kod kalitesini belirleyen 5 temel ilke:
| İlke | Türkçe Karşılığı | Temel Amacı |
|---|---|---|
| S - SRP | Tek Sorumluluk Prensibi | Bir sınıfın değişmek için yalnızca tek bir nedeni olmalıdır |
| O - OCP | Açık/Kapalı Prensibi | Sınıflar genişletilmeye açık, ancak değiştirilmeye kapalı olmalıdır |
| L - LSP | Liskov İkame Prensibi | Alt sınıflar, üst sınıflarının yerine sorunsuzca geçebilmelidir |
| I - ISP | Arayüz Ayrımı Prensibi | İstemciler kullanmadıkları arayüz metodlarına bağımlı olmaya zorlanmamalıdır |
| D - DIP | Bağımlılıkların Tersine Çevrilmesi | Yüksek seviyeli modüller alt seviyelere değil, soyutlamalara (interface) bağımlı olmalıdır |
Gerçek Hayat Örneği: SRP (Single Responsibility Principle)
Kötü Kod (Çok Sorumluluklu ‘God Object’)
// YANLIŞ: Hem sipariş işliyor, hem veritabanına yazıyor, hem e-posta atıyor
class SiparisServisi {
siparisOlustur(siparis: any) {
// 1. İş kuralı doğrulama
// 2. Veritabanına SQL INSERT
// 3. SMTP ile e-posta gönderimi
}
}
Temiz Kod (Ayrık Sorumluluklar)
// DOĞRU: Her sınıf sadece kendi uzmanlık alanını yönetir
class SiparisServisi {
constructor(
private depo: ISiparisDeposu,
private bildirim: IBildirimServisi
) {}
siparisOlustur(siparis: SiparisModeli) {
siparis.dogrula();
this.depo.kaydet(siparis);
this.bildirim.gonder(siparis.musteriEmail, "Siparişiniz alındı");
}
}
Clean Code İçin 3 Pratik Kural
- Anlamlı Değişken İsimleri: Kısaltmalar (
x,tmp,fn) yerine niyetini belli eden isimler (kullaniciGirisTarihi,aktifSiparisListesi) tercih edilmelidir. - Kısa ve Tek İş Yapan Fonksiyonlar: Bir fonksiyon 20 satırı geçmemeli ve yalnızca adının vadettiği tek bir eylemi gerçekleştirmelidir.
- Yorum Satırları Yerine Kendini Açıklayan Kod: “Bu kod ne yapıyor?” sorusunu açıklamak için yorum yazmak yerine kod blokları anlamlı fonksiyon isimlerine bölünmelidir.
Bakımı kolay, uzun ömürlü ve yüksek kaliteli kurumsal yazılım projeleri geliştirmek için Özel Yazılım Geliştirme sayfamızı inceleyebilirsiniz.