Нарушает ли этот код принцип SRP?
function sendError(error) {
log(error);
response.status(500).send(error.message);
}
Нарушает ли этот код принцип SRP?
function sendError(error) {
log(error);
response.status(500).send(error.message);
}
Краткий ответ будет да, в значительной степени.
SRP утверждает, что поведение, которое меняется вместе, должно жить вместе.
Ведение журнала является сквозной проблемой (общесистемной проблемой), что означает, что это функциональность, применимая ко всему вашему приложению.
В вашей функции ведение журнала может быть применимо и не нарушать SRP, поскольку оно изменяется вместе, но то, как мы справляемся с этой сквозной проблемой, может быть улучшено.
То, как вы обрабатываете ведение журнала, будет сильно зависеть от используемой вами среды. Хотя принципы остаются прежними. Основные правила таковы:
1. Вы хотите вести журнал в одном месте, а не во всем приложении.
2 - Вы хотите бросить как можно раньше и поймать как можно позже. (Это оставляет вам большую трассировку стека, помогающую понять, что пошло не так.)
Для достижения этого наиболее распространенным решением является использование промежуточного программного обеспечения. Такие библиотеки, как Express, это позволяют. Ваше специальное промежуточное ПО может перехватывать исключения в последний момент и регистрировать все необработанные исключения.
Сквозными проблемами следует тщательно управлять, так как они могут очень легко раздуть и сломать код.
Для дополнительного чтения по этому вопросу вы можете прочитать о перекрестных проблемах и аспектно-ориентированном программировании.
Дайте мне знать, если есть что-то, что я могу уточнить дальше. :)
log()
сделано только для диагностических целей, я был бы не против иметь его в той же функции - person A. Chiesa   schedule 24.01.2019