SOLID Prensiplerine Giriş: Yazılım Tasarımının Temel Taşı

Modern yazılım geliştirme dünyasında, bakımı kolay ve uzun vadede sürdürülebilir bir kod yapısı oluşturmak çok önemlidir. SOLID prensipleri, bu amaca ulaşmak için kullanılabilecek en iyi yazılım tasarım kurallarından biridir. Robert C. Martin (“Uncle Bob”) tarafından ortaya atılan SOLID, beş temel prensipten oluşur ve yazılımı daha modüler, test edilebilir ve esnek hale getirmeyi amaçlar.

 

 

 

 

1. Single Responsibility Principle (SRP) – Tek Sorumluluk Prensibi

Tanım: Bir sınıf sadece tek bir görevi yerine getirmelidir. Yani, genişletmeye açık, değişikliğe kapalı olmalıdır.

 

Android’de Kullanımı: Bir Activity veya Fragment içinde tüm iş mantığını tutmak yerine, bu mantığı ViewModel veya ayrı bir sınıfa taşırsanız, SRP’yi uygulamış olursunuz.

 


 

2. Open/Closed Principle (OCP) – Açık/Kapalı Prensibi

Tanım: Bir sınıf veya fonksiyon yeni özellikler eklemek için açık olmalı, ancak mevcut kodu değiştirmek zorunda kalmamalıdır.

 

Android’de Kullanımı: Bir RecyclerView adapterinde yeni bir görünüm türü eklemek istediğinizde, mevcut adapteri değiştirmek yerine, yeni bir ViewHolder sınıfı ve layout oluşturmak bu prensibe uygundur.

 

 


 

3. Liskov Substitution Principle (LSP) – Liskov’un Yerine Geçme Prensibi

Tanım: Bir alt sınıf, üst sınıfın yerine kullanılabilmelidir ve sistemin davranışını bozmamalıdır.

 

Android’de Kullanımı: Bir BaseActivity sınıfından türetilen tüm Activity’lerin, BaseActivity metodlarını sorunsuz şekilde kullanabilmesi gerekir. Şayet bir alt sınıf temel sınıfın çalışma şeklini bozuyorsa, LSP ihlal edilmiştir.

 

 


 

4. Interface Segregation Principle (ISP) – Arayüz Ayırma Prensibi

Tanım: Bir sınıf, ihtiyacı olmayan metodları uygulamak zorunda kalmamalıdır. Arayüzler belirli amaçlara hizmet edecek şekilde tasarlanmalıdır.

 

Android’de Kullanımı: Tek bir OnClickListener yerine, belirli olaylar için ayrı arayüzler tanımlamak (mesela, bir liste elemanını silmek için ayrı bir listener, düzenlemek için ayrı bir listener kullanmak) ISP’ye uygun bir yaklaşımdır.

 

 


 

5. Dependency Inversion Principle (DIP) – Bağımlılıkların Ters Çevrilmesi Prensibi

Tanım: Yüksek seviyeli modüller, doğrudan düşük seviyeli modüllere bağlı olmamalı, her ikisi de soyutlamalara bağlı olmalıdır.

 

Android’de Kullanımı: Doğrudan bir Retrofit servisine bağımlı olmak yerine, ApiService adında bir soyutlama kullanarak, farklı API istemcilerine geçiş yapmak daha kolay hale getirilebilir.