SOLID Nedir ? SOLID Prensipleri Nelerdir ? Neden SOLID Prensipleri Var ?

Merhaba arkadaşlar bu yazımızda yazılım iş mülakatlarında mutlaka sorulan solid prensiplerine değineceğiz.

Solid prensipleri yazılım geliştirmenin temel prensipleri olarak nitelendirilmektedir. Eğer solid prensiplerine uyarsak kod optimiasyonu, düzenli kod yazma ve kodun sürekliliği konusunda iyi bir aşama kaydetmiş oluruz.

Neden SOLID Prensiplerine uymalıyız ?

  • Daha temiz ve düzenli kod yazmamızı sağlar.
  • Karmaşıklığı önler.
  • Projede güncelleme yapacağımız zaman kodda minimum seviyede değişiklik yapmamıza olanak sağlar.
  • Projeyi daha hızlı geliştireceğimiz için zaman kaybını önler.

SOLID kelimesindeki her harf bir prensibe tekabül etmektedir. Bunlar şu şekildedir:

1. (S)ingle Responsibility Principle

2. (O)pen/Closed Principle

3. (L)iskov ‘s Substitution Principle

4. (I)nterface Segregation Principle

5. (D)ependency Inversion Principle


Biz yazılımcılar şair gibi adamlarız. Adam prensipleri akrostik şiir gibi yazmış :)

Şimdi ise bu prensiplerin bize neyi anlatmak istediğine göz atalım.

1.Single Responsibility Principle

Türkçe anlamı "Tek sorumluluk" anlamına gelen bu prensip her fonksiyonun ya da sınıfın sadece bir amaca hizmet etmesi gerektiğini savunur. Java gibi OOP tabanlı dillerle ilgilenenler bilir. Mesela Araba adında bir sınıfımız olsun. Bu sınıf sadece araba ile ilgili işlemleri yapmalıdır. Araba sınıfına buzdolabını tamir et gibi bir fonksiyon tanımlarsak bu prensibe ters hareket etmiş oluruz.

2- Open/Closed Principle

Türkçe anlamı Açık/Kapalı olan bu prensip ise projede kullanılan nesnelerin gelişime açık ama değişime kapalı olmaları gerektiğini savunur.

Open Sınıf için yeni davranışlar eklenebilmesini sağlar. Gereksinimler değiştiğinde, yeni gereksinimlerin karşılanabilmesi için bir sınıfa yeni veya farklı davranışlar eklenebilir olmasıdır.

Closed Bir sınıf temel özelliklerinin değişimi ise mümkün olmamalıdır.

3- Liskov Substitution Principle

Kodlarımızı değiştirmeden türettiğimiz sınıfta üst sınfın özelliklerini kullanabilmeliyiz. Türeyen yani alt sınıfımız üst sınıftaki tüm özellikleri kullanabilmeli ve kendine has özellikleri kolaylıkla tanımlayabilmelidir. Burada alt sınıf üst sınıfa şöyle der: Senin metotların benim metotlarım, benim metotlarım gene benim metotlarım. Ve maalesef üst sınıf bu konuda birşey yapamaz :(

Dipnot: Liskov Substitution Principle MIT programlama metodolojileri grup liderliği yapan Barbara Liskov tarafından öne sürülmüştür.

4- Interface Segregation Principle

“Arayüz Ayırımı” prensibinde; bir interface’e gerekenden fazla metot ve değişken eklemek yerine, daha çok ö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

Bu prensip ise şunu savunur. Üst seviye sınıflar alt seviyedeki sınıflara bağımlı olmamalıdır. Yani yazdığımız projede sınıflar arası bağımlılıklar minimum seviyede olmalıdır.

Mesela türettiğimiz sınıftaki yaptığımız değişiklik ana sınıfımızı etkilememelidir. Bu durumda ana sınıfta da değişiklik yapmamız gerekecek. Ana sınıfta da değişiklik yapınc aana sınıftan türettiğimiz tüm sınıflarda değişiklik yapmak zorunda kalacağız. Proje tarhana çorbası gibi olacaktır.


Bu yazımızda silere solid prensiplerinden bahsetmeye çalıştım. İlerleyen yazılarımda kod örnekleriyle bu konuyu pekiştireceğiz.

Esen kalın.


YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.