Solid Prensipleri

Ana Sayfa Solid Prensipleri

Solid Prensipleri

Merhaba arkadaşlar,

Daha sonra her biri için ayrı ayrı sayfalar oluşturarak detaylandıracağım Solid Prensiplerine değinmek istiyorum.

Bu yazıdaki içeriklerin çoğu Wikipedia’dan alınmış ve Laravel bağlamında ekstra açıklamalar eklenmiştir.

Tek Bir Sorumluluk İlkesi (Single Responsibility)

Bir sınıfın (veya kod biriminin) tek sorumluluğu olmalıdır.

Açık/Kapalı İlkesi (Open–Closed)

Bir sınıf genişletmeye açık ama değişikliğe kapalı olmalıdır.

Bir sınıfı genişletebilir veya interface’i implemente edebilirsiniz ancak bir sınıfı doğrudan değiştiremezsiniz. Bunun anlamı, bir sınıfı doğrudan değiştirmek yerine bir sınıfı genişletmeli ve bu yeni genişlemeyi kullanmalısınız demektir.

Ek olarak, sınıf nitelik ve metodlarının uygun bir şekilde private veya protected olarak ayarlanması, böylece bunların dış kaynaklı kodlarla değiştirilememesi demektir.

Liskov İkame İlkesi (Liskov Substitution)

Bir programdaki nesneler yerine, bu nesnelerin alt tiplerinin olguları o programın doğruluğunu değiştirmeksizin konabilmelidir.

PHP’de, bu çoğu keresinde kodunuz için implemente edilecek interface’ler oluşturmanız anlamına gelir. Daha sonra interface’lerin implementasyonlarını değiştirebilirsiniz (geçiş yapabilirsiniz, yani buradaki değiştirme bir interface’in bir implementasyonunun içinin değiştirilmesi değildir, bir interface’in bir implementasyonu yerine o interface’in başka bir implementasyonunun koyulmasıdır). Bunun yapılması, implementasyonla etkileşen uygulama kodunuzda değişiklik yapma zorunluğu olmaksızın mümkün olmalıdır. Interface belirli metodların mevcut olacağını garanti altına alan bir sözleşme olarak hizmet eder.

Interface Ayrımı İlkesi (Interface Segregation)

İşe özgü birçok interface genel amaçlı bir tek interface’den daha iyidir.

Genel olarak, tüm durumlarda çalışmaya kalkışan genel amaçlı bir sınıf oluşturmak yerine, bir interface oluşturmak ve onu birçok kez implemente etmek tercih edilir.

Bağımlılığın Tersine Çevrilmesi İlkesi (Dependency inversion)

Somut sınıflar yerine soyutlamalara bağlı olunmalıdır.

Sınıf bağımlılıklarını somut bir sınıf yerine bir interface olarak tanımlamalısınız. Bu size bağımlılığı kullanan sınıfta değişiklik yapmak zorunda kalmaksızın o interface’in başka bir implementasyonuna geçiş yapma imkanı verecektir.

Sinan Eldem

Fullstack Web Developer

Laravel Framework ile PHP ve MySQL üzerine özel ders, danışmanlık ve web programcılığı hizmetleri veriyorum.

Danışmak istedikleriniz ile ilgili benimle irtibat kurabilirsiniz.

Benzer Yazılar

macOS, CentOS ve Ubuntu Üzerinde PostgreSQL Kurulumu ve Türkçe Karakter Hatasının Giderilmesi

Bu makalede macOs, Centos ve Ubuntu üzerine kurulumu, kullanıcı (rol) ve veritabanı oluşturulmasına ilişkin komutları bulacaksınız.

Php ile Geri Döndürülebilir Şifreler Oluşturmak

Hem alternatif olması hem de ek bir bağımlılık gerektirmemesi için sınıf geliştirdim.

Laravel Framework public Dizin İsmini Değiştirme

Laravel ile herhangi bir projeye başlarken ilk yaptığım eylemlerden biri, virtual host sorunları yaşamamak için public dizini ayarını değiştirmektir.

Yorumlar