Nisa Efendioğlu

Solid Prensipleri

Profile picture

Nisa Efendioğlu

Post Image

SOLID prensipleri, nesne yönelimli programlamada daha esnek, sürdürülebilir ve kolay bakımı yapılabilir yazılımlar geliştirmek için kullanılan beş temel tasarım ilkesidir. Bu prensipler, yazılım tasarımının karmaşıklığını azaltarak, gelecekte yapılacak değişikliklerin daha kolay uygulanabilmesini sağlar.

SOLID Prensipleri:

  1. S: Single Responsibility Principle (SRP)
    Tek Sorumluluk Prensibi:
    Bir sınıf yalnızca bir amaç için sorumlu olmalıdır.
    • Her sınıfın veya modülün bir tek sorumluluğu olmalı ve bu sorumluluk açıkça tanımlanmalıdır.
    • Değişiklik yapmak gerektiğinde, yalnızca o sorumluluğun etkilendiği sınıf değiştirilmelidir.
      Örnek: Bir "Fatura" sınıfı yalnızca fatura ile ilgili işlemleri yapmalı, faturanın yazdırılma işlemini başka bir sınıf üstlenmelidir.

  1. O: Open/Closed Principle (OCP)
    Açık/Kapalı Prensibi:
    Bir yazılım bileşeni geliştirmelere açık, değişikliklere kapalı olmalıdır.
    • Mevcut kodu değiştirmeden, yeni işlevler ekleyebilmelisiniz.
    • Bu, genellikle soyut sınıflar veya arayüzler ile gerçekleştirilir.
      Örnek: Bir ödeme sistemine yeni bir ödeme yöntemi eklemek (örneğin, PayPal), mevcut kodu değiştirmek yerine, yeni bir sınıf ekleyerek yapılmalıdır.

  1. L: Liskov Substitution Principle (LSP)
    Liskov’un Yerine Geçme Prensibi:
    Bir alt sınıf, üst sınıfının yerine kullanılabilmelidir.
    • Alt sınıf, üst sınıfın davranışını bozmamalıdır.
      Örnek: Bir "Kare" sınıfı, bir "Dikdörtgen" sınıfından türetildiğinde, dikdörtgen özelliklerini (örneğin, genişlik ve yükseklik) doğru şekilde desteklemelidir. Eğer "Kare", "Dikdörtgen" sınıfının özelliklerini yanlış şekilde ele alıyorsa, bu prensip ihlal edilmiş olur.

  1. I: Interface Segregation Principle (ISP)
    Arayüz Ayrımı Prensibi:
    Bir sınıf, sadece kullandığı arayüzlere bağlı olmalıdır.
    • Büyük, kapsamlı arayüzler yerine daha küçük ve odaklanmış arayüzler tercih edilmelidir.
      Örnek: Bir "Uçabilen Hayvanlar" arayüzü, sadece uçabilen hayvanlara uygulanmalıdır. Bir "Kuş" sınıfı, uçma ve yumurtlama gibi özellikleri içeren ayrı arayüzlerden faydalanmalıdır.

  1. D: Dependency Inversion Principle (DIP)
    Bağımlılıkların Tersine Çevrilmesi Prensibi:
    Yüksek seviyeli modüller, düşük seviyeli modüllere doğrudan bağımlı olmamalıdır. Her ikisi de soyutlamalara bağlı olmalıdır.
    • Soyutlamalar (interface/abstract class), detaylara (concrete class) bağlı olmamalıdır.
      Örnek: Bir "Veritabanı" sınıfı doğrudan bir "MySQL" sınıfına bağlı olmamalıdır. Bunun yerine bir "Veritabanı Arayüzü" kullanılarak farklı veritabanı türleri desteklenmelidir.

SOLID Prensiplerinin Faydaları:

  • Daha az hata yapma riski.
  • Daha modüler ve yeniden kullanılabilir kod.
  • Değişimlere ve yeni özelliklere daha uyumlu yazılımlar.
  • Test edilebilirlik ve bakımı kolaylaşmış sistemler.

Bu prensipleri uygulayarak daha profesyonel ve sürdürülebilir projeler geliştirebilirsiniz.

Umarım sizler için faydalı bir makale olmuştur.

Güvenli kodlamalar!

Go back