SOLID Prensipleri Nedir?

Mustafa YILMAZ
2 min readDec 13, 2021

--

SOLID Prensipleri etkili, esnek ve doğru kodlama standartlarının sağlanması için takip edilen prensipler bütününe verilen addır. SOLID temel olarak 5 prensibin oluşturduğu baş harflerden meydana gelir.

Bunlar;

Single-responsibility principle

Open-closed principle

Liskov substitution principle

Interface segregation principle

Dependency inversion principle

SOLID Prensiplerinin Amacı

  • Kodun güncelleme ve düzenlemelere kolayca adapte olması
  • Kod değişikliğini en kısa ve kolay seviyeye indirmek
  • Temiz kod yazmayı sağlamak
  • Karmaşık kodlardan kaçınmak
  • Kodu esnek bir şekilde kullanmak
  • Yazılan kodu okuyan ve geliştiren her kişi tarafından yeterince anlaşılır kılmak

Single Responsibility Principle

Bu prensibe göre amaç bir sınıfın yalnızca tek bir sorumluluğu olmalıdır. Yazılımınızın içinde birden fazla sorumluluğa sahip bir kısım bulunmamalıdır. Bu prensip, yazılım kodunda her bir sınıfın, modülün veya metodun yalnızca bir sorumluluk yapması gerektiğini savunur.

Görev ve sorumluluk birbiri ile çok karıştırılan iki kavram olduğu için türkay ürkmez hocamın klavyesinden ufak bir dipnot eklemek istiyorum.

Sorumluluk; görevleri tek bir çatı altında toplayan bir kavramdır. Bir öğretmenin sorumluluğu; öğrencilerine konuyu en ideal bir biçimde anlatmak, öğrenme materyallerini hazırlamak ve öğrencinin öğrenme durumunu ölçmek görevlerinin birleşmesi ile oluşur.

Open Closed Principle

Yazılan kodlar ekleme ve geliştirilme için açık ancak köklü değişiklikler için kapalı olmalıdır. Open Closed geniş çapta uygulanabilen ancak değişmeden kalan varlıklar gerektirir. Bu noktada çok biçimlilik (polymorphism) ile özel davranışlara sahip yinelenen varlıklar yaratmamız gerekir.

Liskov Substitution Principle

Bir programdaki nesneler o programın doğruluğunu değiştirmeden alt türlerinin örnekleriyle değiştirilebilir olmalıdır yani her alt sınıf, alt sınıfa özgü tüm yeni davranışlarla birlikte temel sınıftaki tüm davranışları korumalıdır. Alt sınıf, aynı istekleri işleyebilmeli ve üst sınıfıyla aynı görevleri tamamlayabilmelidir

Inteface Segregation Principle

İsteme özel birden fazla arayüz , tek bir genel amaçlı arayüzden daha iyidir. ISP’de sınıfların kullanmadıkları davranışları içermesi istenmez.

ISP Sayesinde;

Daha az kod taşıyan metotlar elde edilir. Kodun ihtiyaç durumunda güncellemesi hızlanır

Davranıştan bir metot sorumlu olduğu için davranışta karşılaşılan problem hızlı bir şekilde çözülür

Dependency Inversion Principle

Sınıf ve doğru özellekliklerin sınıfa eklenmesi açısından en önemli Nesne Yönelimli Programla konularından biriside Abstraction (Soyulama) konusudur.

Yüksek seviyeli modüller, düşük seviyeli modüllere bağlı olmamalıdır. Bunun yerine, her ikisi de abstraction veya interfacelere bağlı olmalıdır.

Abstraction detaylara bağlı olmalıdır tam tersine detaylar soyutlamaya bağlı olmalıdır.

SOLID Prensibleri Özetle;

Single Responsibility: Sınıflar iyi tanımlanmış tek bir sorumluluk almalı.

Open/Closed: Sınıflar değişikliğe kapalı geliştirilmeye açık olmalıdır.

Liskov Substution: Kodumuzda herhangi bir değişiklik yapmaya gerek kalmadan türetilmiş sınıfları ata sınıf yerine kullanabilmeliyiz.

Interface Segregation: Genel kullanım amaçlı tek bir arayüz yerine özelleşmiş birden çok arayüz oluşturma tercih edilmeli.

Dependecy Inversion: Katmanlı mimarilerde üst seviye modüller alt seviyedeki modüllere doğrudan bağımlı olmamalıdır.

--

--