Secondo il libro "Codice pulito" a pagina 38, le seguenti righe di codice violano il principio della responsabilità unica. Tuttavia, non riesco a capire come ci siano "molteplici" ragioni per cui cambiare?
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);
}
}
Mi sembra che lo scopo di questa classe sia singolare: calcolare la retribuzione degli impiegati, orari o salariati - e queste tre funzioni sono allo stesso livello di astrazione e un livello al di sotto della percentuale più alta codice%. Si riferisce al fatto che possono essere aggiunti più tipi di dipendenti?