Yazan: Deniz ÖZDEMİR 08/01/2025
SOLID Nedir? Örneklerle SOLID Prensipleri?

SOLID, yazılım tasarımının temel prensipleri olup, kodun daha esnek, sürdürülebilir ve bakımı kolay olmasını sağlar.

1. Single Responsibility Principle (SRP): Her sınıf yalnızca bir sorumluluğa sahip olmalı.


2.Open/Closed Principle (OCP): Sınıflar, yeni özellikler eklenebilirken mevcut kodu değiştirmemeli.

3.Liskov Substitution Principle (LSP): Bir sınıfın türevleri, ana sınıfla yer değiştirilmelidir.

4.Interface Segregation Principle (ISP): Arayüzler, yalnızca gerekli metodları içermeli ve gereksiz işlevlerden kaçınılmalıdır.

5.Dependency Inversion Principle (DIP): Yüksek seviyeli modüller, düşük seviyeli modüllere değil, soyutlamalara bağlı olmalı.

SOLID Prensipleri Hala Geçerli mi?
img
img

Robert Martin'in SOLID yazılım tasarım prensiplerini ilk geliştirdiği yıllardan bu yana teknoloji ve yazılım endüstrisi büyük bir değişim geçirdi. Yine de temel fikirleri bugün küresel olarak geçerliliğini koruyor. SOLID prensibi bağımlılıkları azaltmayı ve bakım yapılabilirliği arttırmayı amaçlar. Yazılım geliştirme sırasında, her ilke için ekstra bir zaman ve ekstra çaba harcanması gerekir. Böylece kodun karmaşıklığı azaltılabilir ve kodun sürdürülebilirliği yani bakım yapılabilirliği artırılabilir. Esnek bir tasarım ve düşük bağımlılık ve daha yüksek bakım kolaylığı sağlarlar. Kod daha sağlam, daha kararlı ve daha iyi anlaşılabilir hale gelir. SOLID tasarım prensipleri ilk başta bunaltıcı gelebilir, ancak onlarla düzenli olarak çalışma alışkanlığı edindiğinde, kodundaki karmaşıklık azalacak, işin daha kolay hale gelecek. :)

"Temiz kod, sade ve doğrudandır. İyi yazılmış bir metin gibi okunmalıdır."

-Robert C. Martin (Uncle Bob)

SOLID Neden Önemlidir?

1.Değişiklikleri Kolaylaştırır: Büyük bir yapboz düşün. Her bir parça belirli bir yere uyar. Bir parça kırılırsa, sadece o parçayı değiştirmen yeterlidir. Aynı şekilde, SRP (Single Responsibility Principle) prensibini takip ettiğinde, her sınıfın belirli bir görevi olur. Bu da, bir değişiklik yapman gerektiğinde tam olarak nereye bakacağını bilmeni sağlar. OCP (Open-Closed Principle) ise, mevcut kodu değiştirmeden yeni özellikler ekleyebilmeni sağlar, bu da kodun stabil kalmasına yardımcı olur.

2.Kodu Tekrar Tekrar Kullanmayı Sağlar (OCP ve ISP): LEGO parçalarını düşün. Aynı parçaları kullanarak farklı şekiller inşa edebilirsin. Benzer şekilde, OCP (Open-Closed Principle) ile mevcut sınıfları genişleterek yeni özellikler oluşturabilirsin. Bu yeniden kullanılabilirlik, zaman ve emek tasarrufu sağlar. ISP (Interface Segregation Principle) ise sınıfların yalnızca ihtiyaç duydukları şeylere bağlı olmasını sağlar, bu da onları daha esnek ve yeniden kullanılabilir hale getirir.

3.Test Etmeyi Kolaylaştırır (DIP): Değiştirilebilir parçaları olan bir araba düşün. Bir parça kırılırsa, tüm arabayı yeniden inşa etmeden o parçayı değiştirebilirsin. Aynı şekilde, DIP (Dependency Inversion Principle) ilkesini uyguladığında, kodun soyutlamalara bağımlı olur ve test etmek çok daha kolay hale gelir. Test amaçlı bileşenleri değiştirip geri kalan kodu etkilemeden test yapabilirsin.

4.Uyum İçinde Çalışır (DIP): Bir hastanenin farklı bölümlerinde çalışan bir doktor düşün. Her doktor, neyle sorumlu olduğunu tam olarak bilir. Aynı şekilde, DIP prensibine uyulduğunda, geliştiriciler proje üzerindeki farklı bölümler üzerinde aynı anda çalışabilirler. Bu da yanlış anlamaları azaltır ve daha sorunsuz bir iş birliği sağlar.