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.
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.
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.
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.
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.
“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.
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.
anywho
16-December-2021My brother recommended I might like this blog. He was totally right. This publish truly made my day. You cann't believe just how a lot time I had spent for this info! Thank you!