Нарушает ли функция SRP, если регистрирует ошибки поверх основной цели? - PullRequest
0 голосов
/ 23 января 2019

Этот код нарушает принцип SRP?

function sendError(error) {
    log(error);
    response.status(500).send(error.message);
}

1 Ответ

0 голосов
/ 31 января 2019

Коротким ответом было бы "да", в некоторой степени.

SRP заявляет, что поведение, которое меняется вместе, должно жить вместе.

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

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

Способ ведения журнала будет сильно зависеть от используемой вами среды. Принципы остаются неизменными, хотя. Основные правила таковы:

1 - Вы хотите вести журнал в одном центральном месте, а не во всем приложении.

2 - Вы хотите бросить как можно раньше и поймать как можно позже. (Это оставляет вам большой след стека, помогая выяснить, что пошло не так.)

Для достижения этого наиболее распространенным решением является использование промежуточного программного обеспечения. Такие библиотеки, как Express, позволяют это. Ваше пользовательское промежуточное ПО может перехватывать исключения в самый последний момент и регистрировать все необработанные исключения.

Перекрестными проблемами нужно тщательно управлять, поскольку они могут очень легко взламывать и нарушать код.

Для получения дополнительной информации по этой теме вы можете прочитать о сквозных проблемах и аспектно-ориентированном программировании.

Дайте мне знать, если есть что-то, что я могу уточнить далее. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...