← Blog'a Dön
TEKNIK

Clean Code Nedir? Temiz Kod Yazmanın 10 Altın Kuralı

F. Çağrı Bilgehan3 Şubat 202611 dk okuma
clean codetemiz kodsolidrefactoring

Clean Code Nedir? Temiz Kod Yazmanın 10 Altın Kuralı

"Çalışan kod" yazmak kolaydır. "Okunabilir, bakımı yapılabilir ve sürdürülebilir kod" yazmak ise bir sanattır. Robert C. Martin'in (Uncle Bob) ünlü kitabı Clean Code, bu sanatın manifestosudur.

Temiz Kod Nedir?

Temiz kod, başka bir geliştiricinin (veya 6 ay sonraki kendinizin) kolayca okuyabildiği, anlayabildiği ve değiştirebildiği koddur.

"Herhangi bir aptal, bilgisayarın anlayacağı kodu yazabilir. İyi programcılar, insanların anlayacağı kodu yazar." — Martin Fowler

10 Altın Kural

1. Anlamlı İsimlendirme

Değişken, fonksiyon ve sınıf isimleri ne yaptıklarını açıkça belirtmelidir:

// ❌ Kötü
const d = new Date();
const arr = users.filter(u => u.a > 18);

// ✅ İyi
const currentDate = new Date();
const adultUsers = users.filter(user => user.age > 18);

2. Tek Sorumluluk (SRP)

Her fonksiyon, her sınıf tek bir iş yapmalıdır:

// ❌ Kötü — Birden fazla sorumluluk
function processOrder(order) {
  validateOrder(order);
  calculateTax(order);
  chargeCreditCard(order);
  sendEmail(order);
  updateInventory(order);
}

// ✅ İyi — Her fonksiyon tek iş
function processOrder(order) {
  const validatedOrder = validateOrder(order);
  const taxedOrder = applyTax(validatedOrder);
  const payment = processPayment(taxedOrder);
  notifyCustomer(payment);
  updateStock(taxedOrder);
}

3. Küçük Fonksiyonlar

Fonksiyonlar 20 satırı geçmemelidir. Uzun fonksiyonlar, alt fonksiyonlara bölünmelidir.

4. Yorum Yerine Kod

İyi kod kendini açıklar. Yorum, kodun neden yazıldığını anlatmalı, ne yaptığını değil:

// ❌ Kötü yorum
// Kullanıcının yaşını kontrol et
if (user.age >= 18) { ... }

// ✅ İyi — Kod kendini açıklıyor
if (user.isAdult()) { ... }

// ✅ İyi yorum — Neden'i açıklıyor
// Yasal gereklilik: KVKK gereği 18 yaş altı kullanıcılar
// ebeveyn onayı olmadan kayıt olamaz
if (!user.isAdult() && !user.hasParentalConsent()) { ... }

5. DRY (Don't Repeat Yourself)

Aynı kodu iki kere yazmayın. Tekrarlanan mantığı ortak fonksiyonlara çıkarın.

6. Hata Yönetimi

Hataları sessizce yutmayın. Anlamlı hata mesajları kullanın:

// ❌ Kötü
try { ... } catch(e) { console.log(e); }

// ✅ İyi
try {
  const user = await findUser(userId);
  if (!user) throw new UserNotFoundError(userId);
} catch (error) {
  logger.error('Kullanıcı bulunamadı', { userId, error });
  throw error;
}

7. Tutarlı Kod Stili

Proje genelinde tutarlı stil kullanın: indentation, naming convention, dosya yapısı. ESLint/Prettier gibi araçlarla otomatikleştirin.

8. Test Yazın

Test olmayan kod, güvenilmez koddur. Her fonksiyon için en az birim testi yazın:

describe('calculateDiscount', () => {
  it('should apply 10% for orders over 100 TL', () => {
    expect(calculateDiscount(150)).toBe(15);
  });

  it('should not apply discount for orders under 100 TL', () => {
    expect(calculateDiscount(50)).toBe(0);
  });
});

9. Erken Dönüş (Guard Clause)

İç içe if-else blokları yerine erken dönüş kullanın:

// ❌ Kötü — Arrow code
function getDiscount(user) {
  if (user) {
    if (user.isPremium) {
      if (user.yearsActive > 2) {
        return 0.2;
      }
      return 0.1;
    }
    return 0.05;
  }
  return 0;
}

// ✅ İyi — Guard clauses
function getDiscount(user) {
  if (!user) return 0;
  if (!user.isPremium) return 0.05;
  if (user.yearsActive <= 2) return 0.1;
  return 0.2;
}

10. Boy Scout Kuralı

"Kamp alanını bulduğunuzdan daha temiz bırakın." Her commit'te en az bir küçük iyileştirme yapın.

SOLID Prensipleri

| Prensip | Açıklama | |---------|----------| | Single Responsibility | Tek sorumluluk | | Open/Closed | Genişletmeye açık, değiştirmeye kapalı | | Liskov Substitution | Alt sınıf, üst sınıfın yerine geçebilmeli | | Interface Segregation | Küçük, odaklı arayüzler | | Dependency Inversion | Somut değil, soyut bağımlılık |

Sonuç

Temiz kod yazmak bir alışkanlıktır. Başlangıçta zaman alır, ama uzun vadede katlanarak geri döner. Okunabilir kod = daha az bug, daha hızlı geliştirme, daha mutlu ekip.

Clean Code ve SOLID prensiplerini interaktif görevlerle öğrenmek için LabLudus platformunun Foundation kariyer yolunu takip edin.

İlgili Yazılar

Acik Kaynak Yazilim Rehberi: Nedir, Nasil Katki Yapilir?

Acik kaynak yazilim nedir, lisans turleri nelerdir ve acik kaynak projelere nasil katki yapilir? GitHub, open source ve topluluk rehberi.

CI/CD Nedir? Surekli Entegrasyon ve Dagitim Rehberi

CI/CD nedir, neden onemlidir ve nasil kurulur? GitHub Actions, Jenkins ve otomatik test-deploy pipeline rehberi.