Этот вопрос проверяет понимание принципа единственной ответственности (Single Responsibility Principle) и умение выявлять антипаттерны, когда класс или метод выполняет слишком много разнородных задач.
Избыточная ответственность (или нарушение Single Responsibility Principle) возникает, когда один класс или метод берет на себя выполнение нескольких логически не связанных между собой задач. Например, класс может одновременно обрабатывать данные, сохранять их в базу и отправлять email-уведомления. Это делает код жестким, трудным для понимания и изменения.
Рассмотрим класс, который отвечает и за расчет зарплаты, и за отправку отчета:
class EmployeeService {
calculateSalary(employee) {
// сложные расчеты
}
sendReport() {
// отправка email
}
saveToDatabase() {
// SQL запросы
}
}Здесь три разные ответственности смешаны в одном классе. Если изменится формат отчета, придется менять класс, который также отвечает за расчет зарплаты — это увеличивает риск ошибок.
Разделите класс на несколько, каждый со своей четкой задачей:
class SalaryCalculator {
calculate(employee) { /* ... */ }
}
class ReportSender {
send(report) { /* ... */ }
}
class EmployeeRepository {
save(employee) { /* ... */ }
}Соблюдение принципа единственной ответственности делает код более модульным, тестируемым и гибким к изменениям. Применяйте этот подход всегда, когда замечаете, что класс или метод начинает выполнять более одной логической задачи.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
JavaScript
TypeScript
Ключевые слова
Подпишись на Java Developer в телеграм