Solid İlkeleri (Solid Principles)

Ana Sayfa Blog Solid İlkeleri (Solid Principles)

Solid İlkeleri (Solid Principles)

Merhaba arkadaşlar,

Daha sonra her biri için ayrı ayrı sayfalar oluşturarak detaylandıracağım Solid Prensiplerine (İlkelerine) 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

Interface Segregation Principle (Interface Ayrımı İlkesi)

Interface Ayrımı İlkesi bir interface'in hiçbir implementasyonunun, kullanmayacağı metodlara bağlı olmaya zorlanamayacağını söyler.

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.

Laravel Valet

5 Mayıs 2016 tarihi itibariyle, web yazılımı geliştirme ortamı olarak MAC OSX kullananlar için Laravel geliştiricisi Taylor Otwell tarafından yeni bir sunucu arabirimi duyuruldu: Valet

Yorumlar