KISS Prensibi
1960’larda ABD Donanması projelerinde ortaya çıkan “KISS” prensibi, “Keep It Simple, Stupid” (Basit Tut, Aptal) ifadesinin kısaltmasıdır. Bu prensibin amacı, sistemlerin ve araçların gereksiz yere karmaşıklaştırılmasını önlemektir. Prensibin ardındaki isim, mühendis Kelly Johnson’dır. Johnson, bir jet uçağının sadece basit aletlerle tamir edilebilir olması gerektiğini savunmuştur. Bu yaklaşım zamanla yazılım mühendisliği ve tasarım gibi farklı alanlarda da yaygınlaşmıştır.
Programlamada “KISS” Prensibi
“KISS” prensibi, yazılım geliştirmede gereksiz karmaşıklıklardan kaçınarak işleri olabildiğince basit ve anlaşılır bir şekilde yapmayı hedefler. Ancak bu, “her zaman basit yap” demek değildir. Karmaşıklık gerekiyorsa, bu karmaşıklık amaca uygun ve gerekli olmalıdır. Amaç, gereksiz detaylardan arınmış, temiz ve etkili çözümler geliştirmektir.
Bir örnekle açıklayalım: E-ticaret sitesi için sipariş toplamını hesaplayan bir fonksiyon yazdığınızı düşünün. Bu fonksiyon, müşterinin sepetindeki ürünlerin toplam tutarını hesaplar ve belirli bir tutarın üzerindeyse indirim uygular.
İlk hali şu şekilde olabilir:
def siparis_toplami_hesapla(urunler, kullanici_tipi):
toplam = 0
indirim = 0
for urun in urunler:
if isinstance(urun['fiyat'], (int, float)) and urun['fiyat'] > 0:
toplam += urun['fiyat'] * urun['adet']
else:
print("Ürün fiyatı geçersiz!")
return None
if kullanici_tipi != 'uye':
print("Kullanıcı tipi uygun değil, indirim uygulanamaz.")
return toplam
else:
if toplam >= 1000:
indirim = toplam * 0.10
elif toplam >= 500:
indirim = toplam * 0.05
print(f"Uygulanan indirim: {indirim}")
toplam -= indirim
return toplam
Örneğimizdeki fonksiyonun, hem fiyat doğrulama yapıyor, hem indirim hesaplıyor, hem de kullanıcıya hata mesajları ileterek birden fazla sorumluluğa sahip olduğu görülmektedir. Ancak “KISS” prensibi, bir fonksiyonun yalnızca bir amaca hizmet etmesini önerir. Karmaşıklığı azaltmak için bu fonksiyon şu şekilde yeniden yazılabilir:
def siparis_toplami_hesapla(urunler):
toplam = sum(urun['fiyat'] * urun['adet'] for urun in urunler)
indirim_orani = 0.10 if toplam >= 1000 else 0.05 if toplam >= 500 else 0
return toplam * (1 - indirim_orani)
Neler Değişti?
- Sorumluluk ayrımı: Fonksiyon artık yalnızca sipariş toplamını hesaplıyor. Veri doğrulama ve kullanıcı mesajları gibi işlemler başka bir katmanda ele alınabilir.
- Kısalık ve Anlaşılırlık: Fazla kontrol ve mesajlar çıkarılarak kod daha okunabilir hale geldi.
- Basitlik: Hesaplama mantığı net bir şekilde ifade ediliyor, bu da kodun bakımını kolaylaştırıyor.
Bu yaklaşım, yazılımın daha modüler, sade ve sürdürülebilir olmasını sağlar. KISS prensibi, bir problemin çözümünü karmaşık hale getirmek yerine, sade ve doğrudan bir yaklaşım benimsemeyi teşvik eder.