Понимание принципа единой ответственностиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Понимание принципа единой ответственности

Сообщение Anonymous »

Я совершенно не понимаю, как определить, выполняет ли один метод одну задачу, как в следующем коде из книги «Чистый код».

Код: Выделить всё

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);
}
}
Как заявил автор этого фрагмента кода: «...явно делает больше чем одну вещь.
В-третьих, это нарушает принцип единой ответственности (SRP), поскольку существует более одной
причины для его изменения.
». При первом взгляде на код я подумал, почему этот метод нарушает SRP, поскольку в случае изменения в коде это будет оператор переключения только в том случае, если будет добавлен тип сотрудника, но, пытаясь понять метод дальше, я пришел к гипотезе о том, почему он нарушает указанный принцип.

Моя гипотеза состоит в том, что, поскольку имя метода - CalculatePay(Employee e), то единственная ответственность этого метода - вычисление платежа как название метода предполагает, но поскольку внутри метода есть переключатель фильтрации типа Сотрудника, эта фильтрация теперь является другой или другой ответственностью, что нарушает SRP. Не знаю, правильно ли я понял.

Подробнее здесь: https://stackoverflow.com/questions/332 ... -principle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»