"Enter"a basıp içeriğe geçin

SOLID Nedir ? Solid Yazılım Prensipleri Nelerdir ?

SOLID, yazılım geliştirme prensiplerini ifade eden beş önemli ilkenin baş harflerinin bir araya gelmesiyle oluşan bir akronimdir. Bu prensipler, yazılım tasarımını daha esnek, sürdürülebilir ve bakımı kolay hale getirmeyi amaçlar. SOLID prensipleri, yazılım mühendislerinin daha modüler, anlaşılabilir ve genişletilebilir kodlar yazmalarına yardımcı olur. İşte SOLID prensiplerinin her biri:

  1. Single Responsibility Principle (SRP) – Tek Sorumluluk Prensibi: Bir sınıfın sadece bir sorumluluğu olmalıdır ve bir sınıfın değişme nedeni yalnızca bu sorumluluktaki değişiklikler olmalıdır. Örnek:
   // İyi bir örnek
   class EmailService {
       public function sendEmail($to, $subject, $message) {
           // e-posta gönderme işlemleri
       }
   }

   // Kötü bir örnek
   class EmailService {
       public function sendEmail($to, $subject, $message) {
           // e-posta gönderme işlemleri
           // aynı zamanda başka işlemler
       }
   }
  1. Open/Closed Principle (OCP) – Açık/Kapalı Prensibi: Bir sınıf, değişikliklere kapalı (closed) olmalı, ancak yeni davranışları eklemek için açık (open) olmalıdır. Yani mevcut kodu değiştirmeden yeni özellikler eklemek mümkün olmalıdır. Örnek:
   // İyi bir örnek
   class Shape {
       public function area() {
           // alan hesaplama
       }
   }

   class Circle extends Shape {
       public function area() {
           // daire alanı hesaplama
       }
   }

   // Kötü bir örnek
   class Shape {
       public function area() {
           // alan hesaplama
       }
   }

   class Circle extends Shape {
       public function area() {
           // daire alanı hesaplama
           // şekil sınıfını değiştirmek gerekiyor
       }
   }
  1. Liskov Substitution Principle (LSP) – Liskov Yerine Koyma Prensibi: Alt sınıflar, üst sınıfların yerine kullanılabilir olmalıdır. Yani, bir üst sınıfın özelliklerini kullanarak, alt sınıfları kullanmak mümkün olmalıdır. Örnek:
   // İyi bir örnek
   class Bird {
       public function fly() {
           // uçma işlemi
       }
   }

   class Sparrow extends Bird {
       // üst sınıfın metodu kullanılabilir
   }

   // Kötü bir örnek
   class Bird {
       public function fly() {
           // uçma işlemi
       }
   }

   class Penguin extends Bird {
       // uçma işlemi penguine uymuyor, kullanım hatası
   }
  1. Interface Segregation Principle (ISP) – Arayüz Ayrımı Prensibi: Bir sınıf, ihtiyaç duymadığı metodları içeren bir arayüzü implemente etmemelidir. İhtiyaç duyulan metotları içeren küçük, spesifik arayüzler kullanılmalıdır. Örnek:
   // İyi bir örnek
   interface Flyable {
       public function fly();
   }

   interface Eatable {
       public function eat();
   }

   class Bird implements Flyable, Eatable {
       // sadece ihtiyaç duyulan metodları implemente et
   }

   // Kötü bir örnek
   interface Worker {
       public function work();
       public function eat();
   }

   class Robot implements Worker {
       // çalışma ve yeme işlemleri bir robota uymayabilir
   }
  1. Dependency Inversion Principle (DIP) – Bağımlılıkların Tersine Çevrilmesi Prensibi: Yüksek seviyeli modüller, düşük seviyeli modüllere bağlı olmamalıdır. Her ikisi de soyuta (interface, abstract class) bağlı olmalıdır. Bu, değişikliklerin düşük seviyeli modülde yapılmasını ve yüksek seviyeli modülde değişiklik yapmadan uyumluluğun sağlanmasını sağlar. Örnek:
   // İyi bir örnek
   interface Engine {
       public function start();
   }

   class Car {
       protected $engine;

       public function __

construct(Engine $engine) {
           $this->engine = $engine;
       }

       public function start() {
           $this->engine->start();
       }
   }

   // Kötü bir örnek
   class Car {
       public function start() {
           // motor başlatma işlemleri
       }
   }

Bu prensipler, birbirleriyle etkileşim içinde çalışarak, kodun daha modüler, esnek ve sürdürülebilir olmasını sağlar. SOLID prensiplerini anlamak ve doğru bir şekilde uygulamak, yazılım projelerinizin daha sağlam ve uzun ömürlü olmasına yardımcı olabilir.

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir