如果将错误记录在首要目的之上,功能是否违反SRP?

时间:2019-01-23 10:08:27

标签: javascript solid-principles single-responsibility-principle

此代码是否违反SRP原则?

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

1 个答案:

答案 0 :(得分:1)

简短的回答是肯定的。

SRP指出,一起改变的行为应该并存。

日志记录是跨领域的关注点(系统范围的关注点),这意味着该功能适用​​于整个应用程序。

在您的职能中,日志记录可能适用,并且不会随着SRP一起更改而中断SRP,但是可以改善我们处理交叉问题的方式。

处理日志的方式在很大程度上取决于您使用的框架。原则仍然保持不变。基本规则如下:

1-您想在一个中央位置而不是整个应用程序中登录。

2-您想尽早投掷,并尽早抓到。 (这给您留下了很大的堆栈痕迹,可帮助您找出问题所在。)

要实现此目的,最常见的解决方案是使用中间件。 Express之类的库允许这样做。您的自定义中间件可以在可能的最后时刻捕获异常并记录所有未处理的异常。

应该对跨切问题进行仔细处理,因为它们很容易膨胀和破坏代码。

要获得关于该主题的更多阅读内容,您可以阅读横切关注点和面向方面的编程。

让我知道是否有什么我需要进一步澄清的。 :)