Skip to content

Single Responsibility Principle (Tek Sorumluluk Prensibi)

1. Single Responsibility Principle

Bir sınıf veya modülün ancak bir sorumluluğu olmalıdır. Yalnızca bir iş yapmalıdır. Bu prensibi daha iyi anlayabilmek için bir ev inşa edilme örneğini düşünelim. Evin mimarı, elektrikçisi, tesisatçısı, duvar ustası vs. her biri kendi işinden sorumludur. Hiçbiri diğerinin işine müdahale etmez. Yazılımda da bu prensip geçerlidir. Bir sınıf veya modül yalnıca bir sorumluluk alır ve onu en iyi şekilde yapar. Ekstradan alakalı olmayan sorumluluklar almaz. Bu standart takip edildiğinde kod daha iyi anlaşılır, test edilebilir ve sürdürülebilir olmaktadır. Bu prensibi anlamak için 2 örnek inceleyeceğiz. Birinci örnek bu prensibi ihlal eden ikinci örnek bu prensibi uygulayan bir örnek olacaktır.

1.1 SRP ihlal

class Employee:
    def calculate_salary(self):
        # maaş hesaplama
        pass

    def save_to_database(self):
        # employee veritabanı kayıt
        pass
Employee sınıfı hem maaş hesaplama hem de veritabanına kayıt fonksiyonlarını gerçekleştirecek şekilde tanımlandığı yani birden fazla sorumluluğu olduğu için SRP ihlali yapmaktadır. Employee sınıfı elbette başka fonksiyonlara sahip olabilir ancak burada önemli olan birbirinden bağımsız işlerin aynı sınıf tarafından yapılıp yapılmadığıdır. Maaş hesaplamada yapılacak değişiklikler veritabanına kayıt işlemlerinde de değişikliğe neden olabilir.

1.2. SRP uygulama

class Employee:
    def calculate_salary(self):
        # maaş hesaplama
        pass

class EmployeeDatabase:
    def save_to_database(self, employee):
        # employee veritabanı kayıt
        pass

Employee ve EmployeeDatabase sınıfları kendilerine has işlerden sorumludur. Maaş hesaplamada yapılacak değişiklik EmployeeDatabase sınıfının fonksiyonlarına etki etmez. Sorumlulukları birbirinden ayırmak, izole etmek değişim için esnek ve sürdürülebilir bir kod yapısı sağlar.