Published on

SOLID Prensipleri Nedir ?

Authors
  • avatar
    Name
    Alperen Önal
    Twitter

Yazımızda bolca geçecekleri için Alt Seviye Sınıf ve Yüksek Seviye Sınıf kavramlarının ne olduklarından kabaca bahsetmek istiyorum.

  • Alt Seviye Sınıf : Kullanılan sınıf.
  • Yüksek Seviye Sınıf : Alt seviye sınıfı kullanan sınıf.

SOLID ilkeleri, Robert C. Martin tarafından 2000 tarihli "Tasarım İlkeleri ve Tasarım Modelleri" başlıklı makalesinde tanıtıldı. Bu kavramlar daha sonra bizi SOLID kısaltmasıyla tanıştıran Michael Feathers tarafından geliştirildi.

S.O.L.I.D. prensipleri, yazılım geliştirmede kodun kalitesini arttırmak, genişletebilirliğini ve modülerliğini sağlamak için uygulanması tavsiye edilen 5 temel tasarım prensibinden oluşmaktadır.

SOLID Prensipleri Sırasıyla ;

1-)S(Single Responsibility Prenciple - Tek sorumluluk Prensibi) : Bir sınıfının sadece bir işlevi yerine getirmesini vurgular.

Amaç : Sınıfların ileride oluşabilecek potansiyel değişikliklerden minumum şekilde etkilenmesi sağlanır.

2-)O(Open/Closed Prenciple - Açık/Kapalı Prensibi) : Bir sınıfın, yeni bir işlev eklemek için açık ancak mevcut davranışı değiştirmek için kapalı olması gerektiğini vurgular.

Amaç : Kodun genişletilebilir olması sağlanır ve mevcut işlevselliğin bozulması önlenir.

3-)L(Liskov Substitution Principle - Liskov Yerine Koyma Prensibi) : Kodda herhangi bir değişiklik yapmadan alt sınıflar, base sınıfın tüm özelliklerini ve metotlarını kullanabiliyor olması gerektiğini vurgular.

Amaç : Bir üst sınıf nesnesinin yerine geçen bir alt sınıf nesnesinin aynı şekilde davranmasını ve aynı sonuçlar üretmesini garantileyerek sınıflar arası hiyerarşinin sağlam temeller üzerine kurulmasını sağlar.

4-)I(Interface Segregation Prenciple - Arayüz Ayırma Prensibi) : Sorumlulukları tek bir interface'de toplamak yerine bu sorumluluklar için ayrı ayrı interface'ler oluşturmamız gerektiğini vurgular.

Amaç : Kullanıcının ihtiyaç duymadığı kodları içeren interface'ler yerine, sorumluluklara göre özelleştirilmiş interface'leri kullanarak dummy code'dan ve ileride oluşabilecek potansiyel sorunlardan kaçınılmasını sağlar.

5-)D(Dependency Inversion Prenciple - Bağımlılığı Tersine Çevirme Prensibi) : Üst sınıfın alt sınıfa bağımlığının olmaması gerektiğini vurgular.

Amaç : Sınıflar arası bağımlılıkların mümkün olduğunca az olmasını sağlar.

Özetle :

SOLID, adından da anlaşılabileceği gibi daha güçlü daha modüler hale getirerek kodun kalitesini kalitesini yükseltir.

Yazılım camiasında "If your code works fine don't touch it / Kodun çalışıyorsa elleme" diye bir laf vardır. Bu, büyük ihtimalle ilgili kodun SOLID prensiplerine uygun olmadığını gösterir. Çünkü kod o kadar iç içe geçerek karman çorman bir hal almıştır ki bir yerde yaptıgınız değişliğin sonucunu başka bir yerden alabilirsiniz veya sadece 1 satırlık değişiklik yaparak programınızın 10 farklı yerinden hata ile karşılaşabilirsiniz. Bu şekilde iç içe geçen bakımı ve yönetilmesi zor olan kodlara Spaghetti code(spagetti kodu) denilmektedir.

Kısaca, spagetti kodundan olabildiğince uzaklaşarak 2 saatde yazdığınız kodda 2 gün boyunca hata ayıklama ile uğraşmak istemiyorsanız bu ilkeleri uygulamanız faydanıza olabilir.

Tabii ki tüm bu prensipleri tek tek örneklerle inceleyeceğiz. Serinin geri kalan kısmına gidebilirsiniz. Single Responsibility Prensibi Nedir ?