Bir yazılımcı olarak bir kod parçasından ilk beklentimiz, elbette ki işlevsel olmasıdır. Peki ya işler yolunda gitmediğinde? Ya da yeni bir özellik eklemek istediğimizde? Kodun içine baktığımızda, karmaşık yapılar ve yetersiz isimlendirmeler yüzünden kendi yazdığımız kodu bile anlamakta zorlandığımızı hayal edelim. Bu durumda, başkasının o kodu okuyup geliştirme yapmasını nasıl bekleyebiliriz?
Yukarıdaki basit senaryo bile, temiz kod (clean code) yazmanın ne kadar önemli olduğunu açıkça ortaya koyuyor.
Peki, nedir bu clean code?
Clean Code Nedir?
Clean Code, bir yazılımın okunabilir, anlaşılabilir ve sürdürülebilir olmasını amaçlayan bir yaklaşımdır. Bu prensip, sadece büyük kurumsal yapılarda değil; küçük projelerde, bireysel çalışmalarda ve startup ortamlarında da büyük fark yaratır. Çünkü yazdığınız kodun sadece bugünü değil, geleceği de vardır.
Neden Önemlidir?
- Geliştirici sayısının fazla olduğu ekiplerde iş birliğini kolaylaştırır.
- Karmaşık iş kurallarının sade bir yapıyla yönetilmesini sağlar.
- Yeni gelen ekip üyelerinin koda adapte olmasını hızlandırır.
- Proje ölçeklendikçe refactor sürecini kolaylaştırır.
- Kendi yazdığınız kodu aylar sonra bile rahatça anlamanızı sağlar.
Clean Code Prensipleri
Temiz kod yazarken dikkat edilmesi gereken bazı temel başlıklar şunlardır:
Anlamlı İsimlendirme
Değişken, fonksiyon ve sınıf isimleri, amacını açıkça yansıtmalı. Kısaltmalardan veya tek harfli isimlerden kaçınmalı, kodu okuyan kişinin ekstra çaba harcamadan ne olduğunu anlayabilmesi sağlanmalı.
Kötü Kod Örneği
public int f(int x, int y) {
return x * y;
}
Temiz ve İyi Kod Örneği
public int calculateTotalPrice(int quantity, int unitPrice) {
return quantity * unitPrice;
}
Gereksiz Karmaşadan Kaçınmak
Kodunuz özlü olmalı ama aşırı kısalıktan dolayı anlam kaybı yaşatmamalıdır. Gereksiz değişkenlerden kaçınmalı, aynı zamanda tekrar kullanılabilir yapılar kurmalısınız.
Doğru Akış
Kodunuzun yukarıdan aşağı okunabilir bir yapıda olması gerekir. Örneğin, en son çalışması gereken bir işlemi akışın başına koymak hem hata riskini artırır hem de okunabilirliği bozar.
Tek Sorumluluk (Single Responsibility)
Her fonksiyon ve her sınıf yalnızca tek bir işlevi yerine getirmelidir. Örneğin, calculateTotalPrice() fonksiyonu sadece toplam fiyatı hesaplamalı, içinde unrelated işlemler bulunmamalıdır.
Bu konuyu daha derinlemesine inceleyeceğimiz SOLID prensipleri ile ilgili yazım yakında yayında olacak.
Tutarlılık
Kod içerisinde aynı işi yapan yapılar her yerde aynı şekilde kullanılmalı. Örneğin sabit değerleri tek bir yerde tanımlayıp, ihtiyaç duyulan her yerden bu merkezi yapı üzerinden erişmek gerekir. Böylece olası bir değişiklikte sadece tek yerden güncelleme yapılır, hata riski azalır.
Gerçek İhtiyaca Yönelik Çıktılar
Bir servisten ihtiyacımız olmayan verileri döndürmek hem sistemi yorar hem de güvenlik açıklarına yol açabilir. Sadece gereken verileri döndürmek, performans ve güvenlik açısından önemlidir.
Dosya ve Modül Yapısı (Temiz Yapı)
Her dosya ilgili olduğu modül ya da klasör altında yer almalıdır. Aksi takdirde kodun yönetimi zorlaşır ve üretkenlik düşer. Özellikle ekip çalışmasında modüler yapı zaman kazandırır.
Yukarıda temiz kod yazarken dikkat edilmesi gereken temel prensiplerden bahsettim. Elbette bu liste uzatılabilir. Ancak önemli olan, temiz kod yazmanın bir lüks değil, bir gereklilik olduğunu unutmamaktır.
Kod yalnızca çalışan bir yapı değil, aynı zamanda başkalarının okuyacağı, geliştireceği ve sürdüreceği bir metindir. Yazdığınız her satır, gelecekte size ya da bir başkasına yardımcı olacak bir belgedir.