Merhabalar, bu yazımızda S.O.L.I.D Kısaca Nedir? ona bakacağız. İlerleyen zamanlarda her maddesine tek tek bakacağız ancak genel çerçeveyi çizmek için ilk olarak özet bilgi vereceğim. Gelin S.O.L.I.D kısaca nedir bir bakalım.
Başlamadan önce Discord sunucuma katılmayı unutmayın. :D
S.O.L.I.D Kısaca Nedir?
SOLID bir yazılım geliştirme prensibidir. SOLID’in 5 maddesi bulunur ve adını da bu maddelerin baş harflerinden alır. Çıkış amacı, geliştirilecek olan yazılımın yeninden kullanılabilir olması, esnek olması, sürdürülebilir olması ,anlaşılır olmasını ve gereksiz kod tekrarlarının olmamasını sağlamaktır. Bu tasarım Robert C. Martin tarafından öne sürülmüştür.
S.O.L.I.D Açılımı Nedir?
- S — Single Responsibility Principle – Tek Sorumluluk İlkesi
- O — Open Closed Principle – Açık-Kapalı Prensibi
- L — Liskov Substitution Principle – Liskov İkame Prensibi
- I — Interface Segregation Principle – Arayüz Ayrıştırma İlkesi
- D — Dependency Inversion Principle – Bağımlılık Tersine Çevirme İlkesi
1 – S — Single Responsibility Principle – Tek Sorumluluk İlkesi
Single responsibility prensibi sınıflarımızın iyi tanımlanmış tek bir sorumluluğu olması gerektiğini anlatmaktadır. Bir sınıf (nesne) yalnızca bir amaç uğruna değiştirilebilir, o amaçta o sınıfa yüklenen sorumluluktur, yani bir sınıfın yapması gereken yalnızca bir işi olması gerekir. Eğer geliştirdiğiniz sınıf ya da fonksiyon birden fazla amaca hizmet ediyorsa, bu kurala aykırı bir geliştirme sürecinde olduğunuz anlamına geliyor. Bunu farkettiğinizde amaçlara uygun olarak parçalamanız gerekmektedir.
2 – O — Open Closed Principle – Açık-Kapalı Prensibi
Bir sınıf ya da fonksiyon var olan özellikleri korumalı yani davranışını değiştirmiyor olmalı ve yeni özellikler kazanabilmelidir. Sınıflarımız/fonksiyonlarımız değişikliğe kapalı ancak yeni davranışların eklenmesine açık olmalıdır. Bu prensip; sürdürülebilir ve tekrar kullanılabilir yapıda kod yazmanın temelini oluşturur. Robert C. Martin
3 – L — Liskov Substitution Principle – Liskov İkame Prensibi
Kodlarımızda herhangi bir değişiklik yapmaya gerek duymadan alt sınıfları, türedikleri(üst) sınıfların yerine kullanabilmeliyiz. Türeyen sınıf yani alt sınıflar ana(üst) sınıfın tüm özelliklerini ve metotlarını aynı işlevi gösterecek şekilde kullanabilme ve kendine ait yeni özellikler barındırabilmelidir. “Alt seviye sınıflardan oluşan nesnelerin/sınıfların, ana(üst) sınıfın nesneleri ile yer değiştirdikleri zaman, aynı davranışı sergilemesi gerekmektedir. Türetilen sınıflar, türeyen sınıfların tüm özelliklerini kullanabilmelidir.”
4 – I — Interface Segregation Principle – Arayüz Ayrıştırma İlkesi
Sorumlulukların hepsini tek bir arayüze toplamak yerine daha özelleştirilmiş birden fazla arayüz oluşturmayı tercih etmemizi söyleyen prensiptir.
Tek bir interface yerine kullanımlarına göre parçalanmış birden fazla interface ile işlemleri yürütmeliyiz. Yani her farklı sorumluluğun kendine özgü bir arayüzü olması gerekmektedir. Böylece interface’i kullanan kişide sadece ihtiyacı olanlarla ilgilenmiş olur. Birden fazla amaç için yalnızca bir arayüzümüz var ise buna gerektiğinden fazla method ya da özellik ekliyoruz demektir, bu da IS prensibine aykırı davrandığınız anlamına gelir..
5 – D — Dependency Inversion Principle – Bağımlılık Tersine Çevirme İlkesi
Sınıflar arası bağımlılıklar olabildiğince az olmalıdır özellikle üst seviye sınıflar alt seviye sınıflara bağımlı olmamalıdır. Bir sınıfın, metodun ya da özelliğin, onu kullanan diğer sınıflara karşı olan bağımlılığı en aza indirgenmelidir. Bir alt sınıfta yapılan değişiklikler üst sınıfları etkilememelidir. Yüksek seviye sınıflarda bir davranış değiştiğinde, alt seviye davranışların bu değişime uyum sağlaması gerekir. Ancak, düşük seviye sınıflarda bir davranış değiştiğinde, üst seviye sınıfların davranışında bir bozulma meydana gelmemelidir.
S.O.L.I.D Kısaca Nedir? yazımızda bu kadardı arkadalar. Diğer yazılarda görüşmek üzere…
Programlama konuları hakkında daha fazla yazı için tıklayabilirsiniz. C# Eğitim Seti sayfasına gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
Discord sunucuma katılmayı unutmayın. :D
Kodla kalın.