Соблюдение принципа единой ответственности на уровне метода
В контексте отправки электронной почты, это нормально, если запросить внешнюю информацию внутри метода или значение должно быть передано, как во втором примере.
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, вы должны делать это и на типах: должен ли класс действительно отвечать за отправку и выборку данных (предположительно) из базы данных?
- Отправка почты на имя компании
- Поиск названия компании по идентификатору компании
Это две отдельные работы, каждая из которых заслуживает своего типа.