SOLID Tasarım İlkeleri Nedir?
SOLID, Robert C. Martin tarafından popülerleştirilen, nesne yönelimli yazılım tasarımında kullanılan beş temel prensibi temsil eden bir kısaltmadır. Bu prensipler, yazılımın anlaşılırlığını, esnekliğini, sürdürülebilirliğini ve yeniden kullanılabilirliğini artırmayı hedefler.
SOLID, Tek Sorumluluk (Single Responsibility), Açık/Kapalı (Open/Closed), Yerine Koyma (Liskov Substitution), Arayüz Bölümleme (Interface Segregation) ve Bağımlılıkların Ters Çevrilmesi (Dependency Inversion) ilkelerinden oluşan bir akrostiştir.
Adım adım çözümlü örnekler
Tek Sorumluluk Prensibi (SRP) örneği?
Bir `Kullanici` sınıfının hem kullanıcı bilgilerini yönetmesi hem de veritabanı işlemlerini yapması SRP'yi ihlal eder. Bu durumu çözmek için `KullaniciBilgileri` ve `KullaniciVeritabaniIslemleri` gibi ayrı sınıflar oluşturulmalıdır.
Açık/Kapalı Prensibi (OCP) örneği?
Bir `Hesaplayici` sınıfının yeni matematiksel işlemler için her seferinde güncellenmesi OCP'yi ihlal eder. Bunun yerine, her işlem için ayrı bir `Islem` arayüzü ve bu arayüzü uygulayan sınıflar (örn. `Toplama`, `Cikarma`) kullanılarak sınıf, yeni işlemlere kapalı hale getirilir.
Liskov Yerine Koyma Prensibi (LSP) örneği?
Bir `Kus` sınıfı ve onun `Penguen` alt sınıfı düşünelim. Eğer `Kus` sınıfının `uc` metodu varsa ve `Penguen` bu metodu geçersiz kılarak uçamaz hale geliyorsa, LSP ihlal edilir. Çünkü `Penguen` nesnesi, `Kus` nesnesinin beklenildiği her yerde kullanılamaz.
Bilgi kartları
Mini test
S1.Aşağıdakilerden hangisi SOLID prensiplerinden biri DEĞİLDİR?
S2.Bir sınıfın yalnızca tek bir sorumluluğu olması gerektiğini belirten SOLID prensibi hangisidir?
S3.Yazılım varlıklarının genişletilmeye açık, ancak değişikliğe kapalı olması gerektiğini savunan prensip hangisidir?
Sık yapılan hatalar
Büyük ve tek bir arayüz oluşturup tüm sınıfların bunu implement etmesi. — Doğrusu: Kullanılmayan metotları içermeyen, daha küçük ve spesifik arayüzler oluşturarak istemcilerin sadece ihtiyaç duydukları metotlara bağımlı olmasını sağlamak (ISP).
Her yeni özellik eklendiğinde mevcut sınıfları doğrudan değiştirmek. — Doğrusu: Mevcut sınıfları değiştirmek yerine, yeni özellikleri soyutlamalar veya yeni sınıflar aracılığıyla eklemek (OCP).
Sıkça sorulan sorular
SOLID prensipleri neden önemlidir?
SOLID prensipleri, yazılımın daha anlaşılır, esnek, sürdürülebilir, test edilebilir ve yeniden kullanılabilir olmasını sağlar. Bu da uzun vadede geliştirme maliyetlerini düşürür ve hata oranını azaltır.
SOLID prensipleri sadece nesne yönelimli programlama için mi geçerlidir?
SOLID prensipleri öncelikli olarak nesne yönelimli programlama (OOP) için tasarlanmış olsa da, temel prensipleri (modülerlik, soyutlama, sorumluluk ayrımı vb.) diğer programlama paradigmalarında da uygulanabilir ve faydalı olabilir.
SOLID prensiplerini uygulamak kod karmaşıklığını artırır mı?
Başlangıçta SOLID prensiplerini uygulamak biraz daha fazla çaba gerektirebilir ve kodda ilk bakışta bir miktar karmaşıklık artışı görülebilir. Ancak uzun vadede, kodun anlaşılırlığı, bakımı ve genişletilebilirliği sayesinde toplam karmaşıklık azalır.