- Geliştirdiğimiz yazılımın gelecekte gereksinimlere kolayca adapte olması
- Yeni özellikleri kodda bir değişikliğe gerek kalmadan kolayca ekleyebileceğimiz
- Yeni gereksinimlere karşın kodun üzerinde en az değişimi sağlaması
- Kod üzerinde sürekli düzeltme hatta yeniden yazma gibi sorunların yol açtığı zaman kaybını da minimuma indirmektir.
S - Single-responsibility principle
Bir sınıfın (nesnenin) değiştirilme sebebi, yalnızca üzerine yüklenen belirli sorumluluğa odaklanmalıdır. Yani, bir sınıfın (veya fonksiyonun) tek bir amacı olmalı ve sadece o amacı yerine getirmelidir.
Bir sınıfın üstlendiği sorumluluk ne kadar az ise, o kadar az değişikliğe maruz kalacaktır.
O - Open-closed principle
Bir sınıf veya fonksiyon, mevcut özellikleri korumalı ve değişikliklere kapalı olmalıdır. Yani, mevcut davranışını değiştirmemeli, ancak gelecekteki gereksinimlere uyum sağlayabilmek için yeni özellikleri kolayca ekleyebilmelidir.
Uygulamamız, gelecek ihtiyaçlara hızlı bir şekilde adapte olabilir ve evrim geçirebilir bir modeli benimsemelidir.
L - Liskov substitution principle
Kodlarımızda herhangi bir değişiklik yapmadan, alt sınıfları, türedikleri (üst) sınıfların yerine kullanabilmeliyiz.
Türeyen sınıf, kendine ait yeni özellikleri içerebilmelidir, bu sayede esnek ve genişletilebilir bir tasarım elde edebilmek adına sorunsuz bir şekilde yer değiştirebilmelidir.
I - Interface segregation principle
Sorumlulukları tek bir arayüz altında toplamak yerine, daha spesifik ve özelleştirilmiş birden fazla arayüz oluşturmalıyız.
Bu prensip, birden fazla arayüz oluşturmayı teşvik eder ve sorumlulukların mantıklı bir şekilde ayrılmasını sağlar.
D - Dependency Inversion Principle
Sınıflar arasındaki bağımlılıklar mümkün olduğunca azaltılmalıdır; özellikle üst seviye sınıfların, alt seviye sınıflara bağımlı olmamalıdır.
Düşük seviye sınıflarda bir davranış değişikliği olduğunda, üst seviye sınıfların davranışında herhangi bir bozulma meydana gelmemelidir.
Top comments (0)