18 Aralık 2016 Pazar

S.O.L.I.D Principles

Yazılım geliştirme aşamasında her birimiz birden fazla araç kullanırız. visual studio, eclipse, telerik, devexpress, sql server, oracle db, tfs, svn vs.   Neden ?  İşimizi kolaylaştırıyor, standartlar sağlıyor, güvenilir, kaliteli. Bu yazılım araçlarından beklediklerimiz kendi yazacağımız uygulama içinde geçerli olmalı. Yazdığınız uygulamayı da birileri bir yerlerde kullanıyor olacak. En bize dokunanı ise kodları güncelleyip, geliştirmeler yapacak olanlar, hata ayıklayacak olanlar ise gene biz olacağız. 

Yazılımda kalite ve standartları tariflemek, ortak bir dil haline getirmek için prensipler, bu prensipleri temel alan ve çözüm üreten programlama dili bağımsız tasarım-mimari kalıpları ortaya konulmuştur. 

S.O.L.I.D sınıf tasarım prensipleri ismini içinde barındırdığı 5 temel prensibin baş harflerinden almaktadır. Robert Cecil Martin tarafından dillendirilen bu prensipler şunlardır:



SRP The Single Responsibility Principle Bir sınıfın değişmesi için tek bir sebebi olmalı ve tek bir amaca hizmet etmelidir. İsviçre çakısı yapmamalısınız.
OCP The Open Closed Principle Bir sınıfın var olan özelliklerini değiştirmeden yeni özellikler eklenebilmelidir. Üzerinize yeni bir elbise giymek ile, estetik ameliyatı için masaya yatmak aynı şey değildir.
LSP The Liskov Substitution Principle Türeyen sınıflar, temel sınıfların yerine kullanılabilmelidir. Nerede o eski bayramlar dedirtmemeliyiz büyüklerimize. Canlı bir ördege ihtiyac varken oyuncak bir ördeği sırf oda vıraklıyor diye kümese koymamalıyız.
ISP The Interface Segregation Principle iş yaptıracağınız metodlarınızı ortak iş gruplarına göre arayüzlere dağıtın. Bir telefonun piyasadaki tüm markalarin şarj girişlerini destekleyecek sayıda girişi olduğunu gördünüz mü.Telefon üreticilerini buna zorlamayın.
DIP The Dependency Inversion Principle Sınıflarınız soyutlama ve arayüzler üzerinden birbirlerine bağlanabilmeli ve çeşitliliğe izin vermelidir. Bizden lego parçaları yapmamız isteniyor, yap-boz parçaları değil.

Bu prensiplere uygun yazılım geliştirdiğimiz taktirde yönetilebilir, test edilebilir kod yazmamız mümkün olabilir.

Hiç yorum yok :

Yorum Gönder