Nedir Bu Solid Principles !
Kısaca geliştirilen yazılımın esnek, yeniden kullanılabilir, sürdürülebilir ve anlaşılır olmasını sağlayan, kod tekrarını önleyen ve Robert C. Martin tarafından öne sürülen prensipler bütünüdür.
SOLID prensipleri, yazılım geliştirme dünyasında, daha sürdürülebilir, esnek ve bakım kolaylığı sağlayan yazılım tasarımları yapabilmek için önerilen beş temel tasarım prensibini ifade eder. Bu prensipler, nesne yönelimli programlama (OOP) paradigmasında yazılım geliştirenler için oldukça önemlidir. SOLID kısaltması, her bir prensibin ilk harflerinden oluşur:
-
S - Single Responsibility Principle (SRP) - Tek Sorumluluk Prensibi:
- Bir sınıf sadece bir sorumluluğa sahip olmalıdır ve bu sorumluluk yalnızca bir nedenle değişmelidir. Başka bir deyişle, her sınıfın tek bir işlevi olmalıdır.
- Bu prensip, sınıfların karmaşıklığını azaltmaya ve daha modüler bir yapı oluşturmaya yardımcı olur.
-
O - Open/Closed Principle (OCP) - Açık/Kapalı Prensibi:
- Yazılım varlıkları (sınıflar, fonksiyonlar, modüller, vb.) genişlemeye açık ancak değişime kapalı olmalıdır. Yani, var olan kodu değiştirmeden yeni işlevsellik ekleyebilmelisiniz.
- Bu prensip, yazılımın mevcut kodunun üzerine eklemeler yaparak gelişmesini sağlarken, mevcut işlevselliği bozmadan kodu değiştirmeyi engeller.
-
L - Liskov Substitution Principle (LSP) - Liskov Yerine Geçme Prensibi:
- Bir sınıfın türevi, temel sınıf yerine geçebilmeli ve temel sınıf ile aynı davranışı sergilemelidir. Yani, alt sınıflar, üst sınıfların yerine geçebilecek şekilde tasarlanmalıdır.
- Bu prensip, alt sınıfların, üst sınıfın tüm işlevlerini doğru şekilde miras almasını sağlar.
-
I - Interface Segregation Principle (ISP) - Arayüz Ayrımı Prensibi:
- Bir sınıf, kullanmadığı arayüzleri implement etmemelidir. Yani, bir arayüz çok genel değil, belirli bir işlevi yerine getirecek kadar spesifik olmalıdır.
- Bu prensip, gereksiz bağımlılıkları ve karmaşıklığı önler, sınıfların daha esnek olmasını sağlar.
-
D - Dependency Inversion Principle (DIP) - Bağımlılıkların Tersine Çevrilmesi Prensibi:
- Yüksek seviyeli modüller, düşük seviyeli modüllere bağlı olmamalıdır. Her ikisi de soyutlamalara (interface'lere veya abstract sınıflara) bağlı olmalıdır.
- Ayrıca, soyutlamalar somut sınıflara bağımlı olmamalıdır; tam tersi olmalıdır. Bu prensip, bağımlılıkları yönetmeyi kolaylaştırır ve modüller arasındaki bağımlılıkları zayıflatır.
SOLID Prensiplerinin Avantajları:
- Kodun daha modüler, anlaşılır ve bakımının daha kolay olmasını sağlar.
- Esnekliği artırır, çünkü yeni özellikler eklemek mevcut kodu değiştirmeye gerek kalmadan yapılabilir.
- Daha az hata ve daha kolay test edilebilirlik sağlar.
- Yazılımın evrimini kolaylaştırır, çünkü değişiklikler izole edilebilir ve kodun büyük bölümleri etkilenmez.
SOLID prensiplerini uygulamak, yazılım geliştirme süreçlerinde uzun vadede daha sağlam ve sürdürülebilir çözümler elde etmeye yardımcı olur.