Segundo Robert C. Martin, o SRP afirma que:
Nunca deve haver mais de um motivo para uma classe mudar.
No entanto, em seu livro Código Limpo , capítulo 3: Funções, ele mostra o seguinte bloco de código:
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);
}
}
E então afirma:
Existem vários problemas com esta função. Primeiro, é grande e, quando novos tipos de funcionários são adicionados, ele aumenta. Segundo, claramente faz mais de uma coisa. Terceiro, viola o Princípio da Responsabilidade Única (SRP), porque há mais de um motivo para mudar . [ênfase minha]
Em primeiro lugar, pensei que o SRP fosse definido para classes, mas também é aplicável a funções. Em segundo lugar, como essa função tem mais de um motivo para mudar ? Só vejo isso mudando devido a uma alteração no Employee.