Software Engineering

Temiz Kodu Ustalıkla Kullanma: Okunabilir ve Bakımı Kolay Yazılım İçin Bir Taslak

Yazılım mühendisliği alanında, geliştirmenin en pahalı kısmı kod yazmak değil, onu bakımını yapmaktır. "Temiz Kod" sadece çalışan kod yazmakla ilgili değildir; aynı zamanda diğer geliştiriciler tarafından ve sizin gelecekteki kendiniz tarafından kolayca anlaşılan, değiştirilen ve hata ayıklanan kod yazmaktır. Geliştiriciler olarak, kod yazmaktan çok daha fazla zaman kod okumaya harcarız. Bu nedenle, okunabilirliği optimize etmek bir lüks değil; profesyonel bir zorunluluktur.

Temel Felsefe: Öncelikle Okunabilirlik

Temiz kodun temel prensibi, her delinin bir bilgisayarın anlayabileceği kodu yazabilmesidir. İyi programcılar, insanların anlayabileceği kod yazar. Bu, zekice çözümlerden netliği önceliklendirmek anlamına gelir. Zekice bir satırda yazılmış kodlar kod incelemesinde etkileyici olabilir, ancak genellikle niyeti gizler ve hatalara yol açar.

Değişken adlandırmasını düşünün. Değişkenler, işlevler ve sınıflar, niyeti ortaya koyan bir netlikle adlandırılmalıdır. Kısaltmalardan ve sihirli sayılardan kaçının. Bir değişkenin ne yaptığını açıklamak için yorum eklemeniz gerekiyorsa, değişken adı muhtemelen yetersizdir.

Örnek: Önce ve Sonra

// Kötü: Belirsiz değişken adları ve sihirli sayılar
int d; // gün cinsinden geçen süre
int s = d * 86400 + m * 60 + h;

// İyi: Niyeti ortaya koyan adlar ve sabitler
const SECONDS_IN_DAY = 86400;
const SECONDS_IN_HOUR = 3600;

const elapsedDays = calculateElapsedDays(startDate, endDate);
const totalSeconds = (elapsedDays * SECONDS_IN_DAY) + 
                     (elapsedMinutes * 60) + 
                     (elapsedHours * SECONDS_IN_HOUR);

"Kötü" örneğinde, `86400` sihirli sayısı, anlaşılması için hesaplama gerektiren gizli bir sabittir. "İyi" örneğinde ise niyet açıktır ve kod kendini açıklayıcı hale gelir.

İşlevler: Küçük ve Tek İş Yapan

İşlevler, herhangi bir yazılım uygulamasının yapı taşlarıdır. Temiz işlevler küçük olmalı ve tek bir iş yapmalıdır. Bir işlev çok fazla iş yapıyorsa, test edilmesi, yeniden kullanılması ve anlaşılması zorlaşır. İyi bir kural, bir işlevi başka bir işlevin içinden çıkarabildiğinizde ve çıkarılan işlev adı ebeveyn işlev içinde iyi okunuyorsa, karmaşıklığı doğru şekilde parçalara ayırdığınızın bir işaretidir.

Eylemde Tek Sorumluluk İlkesi

// Kötü: İşlev birden fazla iş yapar
function processOrder(order) {
  // Siparişi doğrula
  if (!order.items || order.items.length === 0) {
    throw new Error("Sipariş boş");
  }
  
  // Toplamı hesapla
  let total = 0;
  for (const item of order.items) {
    total += item.price * item.quantity;
  }
  
  // Onay e-postası gönder
  sendEmail(order.customer.email, "Sipariş Alındı");
  
  return total;
}
// İyi: Odaklanmış, modüler işlevler
function validateOrder(order) {
  if (!order.items || order.items.length === 0) {
    throw new Error("Sipariş boş");
  }
}

function calculateOrderTotal(order) {
  return order.items.reduce((total, item) => 
    total + (item.price * item.quantity), 0
  );
}

function processOrder(order) {
  validateOrder(order);
  const total = calculateOrderTotal(order);
  sendOrderConfirmation(order);
  return total;
}

Sorumlulukları ayırarak `processOrder`, iş akışının yüksek seviyeli bir açıklaması haline gelir; doğrulama, hesaplama ve iletişim gibi detaylar başka yerlerde ele alınır. Bu, birim testini basitleştirir ve hata izlemeyi hassas hale getirir.

Yorumlar: Son Çare

"Yorumlar zaman kaybıdır" çünkü iyi kod onlara ihtiyaç duymaz diye eski bir şaka vardır. Bu bir abartı olsa da, içinde bir gerçeklik vardır. Yorumlar, kod gelişirken genellikle güncelliğini yitirir ve kafa karışıklığına yol açar. Bir şeyin *neden* yapıldığını açıklamak için yorumlar kullanmak yerine, *neden*in açık olduğu kodlar yazmaya çalışın. Yorumları sadece kod kendisi niyeti iletemediğinde ve çok az miktarda kullanın.

Sonuç: Uzun Vadeli Yatırım

Temiz kod ilkelerini benimsemek, yazılım projenizin uzun vadeli sağlığına yapılan bir yatırımdır. Bilişsel yükü azaltır, yeni ekip üyeleri için işe alımı hızlandırır ve gelecekteki değişikliklerin maliyetini önemli ölçüde düşürür. Başlangıçta temiz kod yazmak biraz daha uzun sürebilir, ancak hata ayıklama, yeniden düzenleme ve özellik genişletme sırasında kazanılan zaman katlanarak artan getiriler sağlar. Küçük başlayın: bu hafta dağınık bir işlevi yeniden düzenleyin, belirsiz bir değişkenin adını değiştirin ve büyük bir işlevi daha küçük parçalara ayırın. Zamanla, bu küçük adımlar kod tabanınızı iyi işleyen bir makineye dönüştürecektir.

Share: