Robert C. Martin'e göre, SRP şunları söylüyor:
Bir sınıfın değişmesi için asla birden fazla sebep olmamalıdır .
Bununla birlikte, Temiz Kod , bölüm 3: İşlevler kitabında aşağıdaki kod bloğunu gösterir:
public Money calculatePay(Employee e) throws InvalidEmployeeType {
switch (e.type) {
case COMMISSIONED:
return calculateCommissionedPay(e);
case HOURLY:
return calculateHourlyPay(e);
case SALARIED:
return calculateSalariedPay(e);
default:
throw new InvalidEmployeeType(e.type);
}
}
Ve sonra şunu belirtiyor:
Bu işlevle ilgili birkaç sorun vardır. Birincisi, büyük ve yeni çalışan türleri eklendiğinde büyüyecek. İkincisi, açıkça birden fazla şey yapar. Üçüncüsü, Tek Sorumluluk İlkesini (SRP) ihlal ediyor çünkü değişmesi için birden fazla neden var . [benimkini vurgula]
İlk olarak, SRP'nin sınıflar için tanımlandığını düşündüm, ancak fonksiyonlar için de geçerli olduğu ortaya çıktı. İkincisi, bu fonksiyonun değişmek için birden fazla nedeni var mı? Değiştiğini sadece Çalışan değişikliği nedeniyle görebiliyorum.