Kapat
Algoritma 187 0

SOLİD Prensipleri Nedir ?

SOLID, her yazılımcının bilmesi gereken temel prensipler bütünüdür. Robert C. Martin tarafından ileri sürülen ve kısaltması Michael Feathers tarafından düşünülen bu prensiplerin amacı; kod tekrarına düşmeyerek, sürdürülebilir, anlaşılabilir, esnek ve yeniden kullanılabilir yazılımlar geliştirmektir.

SOLID prensipleri, bir yazılım geliştiricinin Nesne Yönelimli Programlama (OOP) ile yazılım geliştirirken, geliştirdiği yazılımın esnek ve geliştirilmeye uygun olması için uyması gereken kurallar bütünüdür. Bu prensipler doğrultusunda geliştirdiğimiz uygulamalarımız ne kadar büyük olursa olsun, karmaşıklık asla söz konusu olmaz.

Spaghetti Code denilen karmaşıklaşmış kodlar yerine Clean Code denilen temiz kod yazmamamıza olanak sağlar.

Dünya standartlarında yazılım geliştirmemize olanak sağlayan bu prensipleri 5 ana başlıkta ele alabiliriz.
1. S-Single Responsibility Principle
2. O-Open/Closed Principle
3. L-Liskov Substitution Principle
4. I-Interface Segregation Principle
5. D-Dependency Inversion Principle

1 – ) Single Reponsibility principle (Tek Sorumuluk İlkesi)

Geliştirdiğimiz projede bir güncelleme yapılacağı, yeni bir özellik ekleneceği zaman yazılan kod içerisinde boğulmamaktır. Yani bir fonksiyona birden fazla iş yükleme yerine her bir işlem için farklı bir fonksiyon yazmaktır. Bu şekilde olduğu zaman sadece ilgili fonksiyona gidip gerek işlemi yapmamız yeterli olacaktır. Bu şekilde hem zaman kaybı önlenecek hem de meslekten soğumayacaksınız.

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

Bu prensip yazılan fonksiyonların geliştirmeye açık lakin değiştirilmeye kapalı olmasıdır. Yani bir nesne davranışını değiştirmeden yeni özellikler kazanabiliyor olmalıdır. Bu prensip, sürdürülebilir ve tekrar kullanılabilir yapıda kod yazmanın temelini oluşturur.

3 – ) Liskov Substitution Principle ( Liskov İkame Prensipi)

Miras alarak türemiş olan class’ların önce miras aldıkları nesnenin tüm özelliklerini kullanması, daha sonra da kendi özelliklerini barındırması gerekir. Eğer oluşturduğumuz class, miras aldığı nesnenin ‘tüm’ özelliklerini kullanmayacaksa ortaya gereksiz kod blokları çıkar ve bu da bir geliştiricinin isteyeceği en son şeydir. Çünkü bir geliştirici her daim ‘Clean Code’ yazmaya çalışır.

4 – ) Interface Segregation Principle (Arayüz Ayrıştırma İlkesi)

“Arayüz Ayırımı” prensibinde; bir interface’e gerekenden fazla sorumluluk eklemek yerine, daha özelleştirilmiş birden fazla interface oluşturulmalıdır. Nesneler, ihtiyacı olmayan özellik veya metotlar içeren interface’leri miras almaya zorlanmamalıdır. Sizinde farkettiğiniz üzere “Single Responsibility” ve “Interface Segregation” prensipleri birbirine oldukça benzemekte ve aynı amaca hizmet etmektedirler. Ancak burada gözden kaçırılmaması gereken en önemli husus şudur ki; ‘Interface Segregation’ prensibi interface’ler ile ilgilenirken, ‘Single Responsibility’ prensibi class’lar ile ilgilenmektedir.

5 – ) Dependency Inversion Principle (Bağımlılık Tersine Çevirme İlkesi)

Türkçe karşılığı “Bağımlılığın Ters Çevrilmesi” olan bu prensibe göre; alt sınıflarda yapılan değişiklikler üst sınıfları etkilememelidir yani sınıflar arası bağımlılıklar olabildiğince az olmalıdır ve özellikle üst seviye sınıflar, alt seviye sınıflara bağımlı olmamalıdır. Peki burada ne yapmalıyız? Burada yüksek seviye sınıf ile düşük seviye sınıf arasında bir soyutlama katmanı oluşturarak her iki sınıfı da soyut kavramlar üzerinden yönetmeliyiz.

Berat Emre Demir {Berat Emre Demir}