Соблюдение принципа единой ответственности на уровне метода

В контексте отправки электронной почты, это нормально, если запросить внешнюю информацию внутри метода или значение должно быть передано, как во втором примере.

1.

void sendEmail(int companyId) {  
    String companyName = this.selectCompanyName(companyId);
    String body = companyName;
    send(body);
}

2.

void sendEmail(String companyName) {
    String body = companyName; 
    send(body);
}

1 ответ

Да, запрос из метода по-прежнему является единоличной обязанностью (метод по-прежнему выполняет только одно: отправка электронного письма). Это само по себе не противоречит принципу.

Тем не менее, метод должен передавать имя компании напрямую, а метод getCompanyName не должен принадлежать к тому же типу.

Если вы хотите следовать SRP, вы должны делать это и на типах: должен ли класс действительно отвечать за отправку и выборку данных (предположительно) из базы данных?

  • Отправка почты на имя компании
  • Поиск названия компании по идентификатору компании

Это две отдельные работы, каждая из которых заслуживает своего типа.

Другие вопросы по тегам