S.O.L.I.D. Nedir?
SOLID, nesne yönelimli tasarımın beş ilkesini temsil eden bir kısaltmadır. Robert C. Martin aka Bob Amca, 2000 yılında bu ilkeleri ve gereksinimlerini açıklayan bir makale yazdı.
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
Bu blog, neden SOLID ilkesinin önerildiğini açıklıyor. İlkelerin her biri için, bunları bazı örneklerle kapsamlı bir şekilde açıklayan özel bloglar vardır.
Neden S.O.L.I.D.'e ihtiyacımız var?
Yunan filozof Herakleitos,
Değişmeyen tek şey değişimdir
Zaman geçtikçe uygulamanın gereksinimleri değişecektir. Kod tabanına bir ton yeni özellik ve karmaşıklık eklenecek. Sistem kötü tasarlanmışsa, bunun yazılım üzerinde istenmeyen etkileri olacaktır. Kod çürümeye başlayacak ve yazılımın bakımı zorlaşacak.
Sonunda, yazılımda en basit değişiklikleri yapmak için gereken çaba o kadar artar ki mühendisler projeyi yeniden tasarlamayı düşünür. Bu tür yeniden tasarımlar nadiren başarılı olur, bu nedenle ilk kez uygularken bunu dikkate almalıyız.
Yazılım tasarımındaki bozulmanın ana nedeni bizim tarafımızdan iyi bilinmektedir. Gereksinimler, ilk tasarımın öngörmediği şekillerde değişiyor. Yazılım kalitesinde değişiklikler yağmaya devam ettikçe parça parça yavaş yavaş azalır.
Ancak, kalitenin düşmesi için değişen gereksinimleri suçlayamayız. SOLID ilkesi, bazı yaygın tuzaklardan kaçınmamıza yardımcı olacak ve kod tabanının yüksek düzeyde sürdürülebilirliğini sağlayacaktır.
Kötü yazılım tasarımının belirtileri
Aşağıdakiler, yazılımın bozulmaya başladığını gösteren belirtilerdir.
Sertlik
Sertlik, yazılımın basit yollarla bile değiştirilmesinin zor olma eğilimidir. Alt düzey modüldeki küçük bir değişiklik, tüm üst düzey modülleri uygulamada değişiklik yapmaya zorlar. Basit bir günlük değişim olarak başlayan şey tüm sprinti gerektirir.
Kırılganlık
Kırılganlık, yazılımın her değiştiğinde birçok yerde kırılma eğilimidir. Uygulamanın bir bölümünde yapılan küçük bir değişiklik, genellikle kavramsal ilişkisi olmayan alanları bozar. Kırılganlık kötüleştikçe kırılma olasılığı artar. Böyle bir yazılımın bakımı imkansızdır. Her düzeltme sorunu daha da kötüleştirir ve çözülenden daha fazla sorun ortaya çıkarır.
Hareketsizlik
Hareketsizlik, başka projelerden veya aynı projenin bazı bölümlerinden yazılımın yeniden kullanılamamasıdır. Çoğu zaman geliştirici, uygulamada zaten uygulanmış olan bazı işlevlere ihtiyaç duyacaklarını fark eder.
Bununla birlikte, işlevselliğin ayrılmasını ve yeniden kullanılmasını zorlaştıran çok sayıda bağlantısı vardır. Kapsamlı bir analizin ardından geliştirici, yeniden düzenlemenin bazı hayati işlevler için daha büyük bir riske sahip olduğunu belirler. Böylece yazılım yeniden kullanılmak yerine basitçe yeniden yazılır.
SOLID Principles, yukarıdaki semptomlara bir çare sağlayabilir. Bu uygulamaların kullanımı, kod karmaşıklığını, sınıflar arasındaki eşleşmeyi, sorumlulukları ayırmayı ve bunlar arasındaki ilişkileri iyi tanımlamayı azaltma eğilimindedir. Bunlar, kod kalitesini ve sürdürülebilirliğini artırmanın basit yollarıdır.
Bu blogda SOLID Prensiplerinin temellerini ve neden onlara ihtiyacımız olduğunu tartıştık. Bu dizinin gelecek blogunda, bazı gerçek hayat örnekleriyle ilkelerin her birini derinlemesine açıklayacağım, bu yüzden bizi izlemeye devam edin. Yorumlarda düşüncelerinizi bana bildirin.