Kodlama İpuçları

SOLID: Interface Segregation Principle (ISP)

Interface Segregation Principle (ISP), SOLID prensiplerinin dördüncüsüdür ve bir sınıfın, kullanmadığı metodları içeren arayüzlere bağımlı kalmaması gerektiğini belirtir. ISP, daha küçük ve spesifik arayüzlerin, daha büyük ve genel arayüzlerden daha iyi olduğunu savunur.

Önemi

ISP, kodun esnekliğini ve yeniden kullanılabilirliğini artırır. Bu prensip sayesinde, bir sınıf yalnızca ihtiyaç duyduğu metodları içeren arayüzlere bağımlı kalır ve gereksiz bağımlılıklar ortadan kalkar. Bu durum, kodun bakımını ve genişletilmesini kolaylaştırır.

İyi Uygulamalar

  • Küçük ve Spesifik Arayüzler: Arayüzler, tek bir sorumluluğu yerine getirecek şekilde tasarlanmalıdır.
  • Interface Segregation: Büyük arayüzleri, daha küçük ve spesifik arayüzlere bölmeliyiz.
  • Uyumluluk: Sınıflar, yalnızca ihtiyaç duyduğu metodları içeren arayüzleri implement etmelidir.

Örnek

// Kötü Örnek
public interface IWorker
{
    void Work();
    void Eat();
}

public class Worker : IWorker
{
    public void Work()
    {
        // Çalışma işlemleri
    }

    public void Eat()
    {
        // Yemek yeme işlemleri
    }
}

public class Robot : IWorker
{
    public void Work()
    {
        // Çalışma işlemleri
    }

    public void Eat()
    {
        throw new NotImplementedException();
    }
}

// İyi Örnek
public interface IWorkable
{
    void Work();
}

public interface IEatable
{
    void Eat();
}

public class Worker : IWorkable, IEatable
{
    public void Work()
    {
        // Çalışma işlemleri
    }

    public void Eat()
    {
        // Yemek yeme işlemleri
    }
}

public class Robot : IWorkable
{
    public void Work()
    {
        // Çalışma işlemleri
    }
}

Clean Code kitabında, Robert C. Martin, ISP‘nin önemini şu şekilde açıklar: “İstemciler, kullanmadıkları arayüzlere bağımlı olmaya zorlanmamalıdır.” Martin, bu prensibin uygulanmasının yazılımda nasıl esneklik ve sürdürülebilirlik sağladığını örneklerle açıklar. Küçük ve spesifik arayüzler, yazılımın modülerliğini ve yeniden kullanılabilirliğini artırır. Gereksiz bağımlılıkları ortadan kaldırmak, kodun daha okunabilir ve yönetilebilir olmasını sağlar.

Bir yanıt yazın

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