9 Nis 2009

Open Closed Principles

Genişlemeye açık, değişime kapalı prensibi...
Genişlemeye açık olmaktan kasıt; Yazılıma yeni bir metot yada sınıf yada işlerlik kazandırmak isteniliyorsa bu yapılacağı zaman yeni kodlar eklenemeli.
Değişime kapalı olmaktan kasıt; daha önceki kodlar üzerinde oynanmamalı

Şöyle ki çizim yapacak bir sınıfınızın olduğunu düşünün birden fazla şekli çizdirmeniz gerekiyor siz çizim yapacağınız her şekli ve özelliklerini var olan bir kaç değişken üzerinde saklarsanız ve her bir şekil için tip kontrolü yaparak cizim yaptırmaya çalışırsanız kodunuzdan kötü kokular yayılıyor "code smells" demektir.
Yeni bir şekil daha çizdirmeniz gerektiği zaman bu değişkenler değişebilir yada eksik kalabilir yada hiç kullanılmayabilir tüm bunların önüne geçebilmek için OCP uygulanabilir her şekil nesne olarak yaratılıp kendi çerçevesi içinde incelenebilir, eğer o şekil üzerinde değişiklik yapılacaksa sadece bu sınıf değişir geri kalanlarda değişim olmaz yada yeni bir şekil eklendiyse bunun için sınıf oluşturarak sadece bu sınıfa eklentiler yapılabilir.

Kodunuzdan kötü kokular yayıldığını nasıl anlayabilirsiniz;
  • Kod tekrarları varsa
  • Yorum satırlarınız çok fazlaysa
  • Switch yada uzun if-else yapıları varsa
  • Değişken,metot ya da sınıf isimleri doğru verilmemişse (doğrudan kasıt bir değişenin ismine bakıldığında ne sakladığı anlaşılıyorsa p,x,a gibi değilse)
  • Değişken,metot ya da sınıf isimlerinde "and","or" gibi terimler varsa(stabil olmalı "veya","ve" tanımlamaları olmamalı)
  • İnstance i yaratılıp hiç kullanılmayan değişkenler varsa
  • Metotlar çok fazla kod içeriyorsa
  • Sınıflar çok fazla kod içeriyorsa
  • Metot çok fazla parametre alıyorsa
  • İki sınıf aynı özellikleri taşıyorsa (ör: ikiside çizim yapıyorsa demekki ortak özellikleri var, interface yada abstract class kullanarak ortak kodlar tek bi yerden yönetilebilir)

Hiç yorum yok:

Yorum Gönder