我可以在代码中使用日志而不是注释吗?

时间:2015-12-14 15:32:14

标签: logging

是否有人使用日志而不是评论?这样对吗?

例如:

logger.debug('Fingerprint is not specified. Returning only message that password is correct in response.');
logger.info('Password is correct. But fingerprintId was not passed. User ID:', foundUser.id);
logger.debug('Returning success message in response.');

在这种情况下登录会做两件事:记录和评论。

这是常见做法吗?

2 个答案:

答案 0 :(得分:1)

我认为评论和记录仅用于不同目的。

记录完成以查看您的程序现在正在执行的操作或在特定点执行的操作。例如,您打开一个日志文件并检查五分钟前发生了什么以及现在发生了什么。当你没有真正打扰在哪一行或者哪种方法正是发生的事情时,这是有用的,你对事实更感兴趣,比如'用户管理员登录失败:密码不正确' 。显然,当你没有该程序的源代码时,这会有很大的帮助。

评论可以帮助您理解此代码的作用,这个特定函数正在做什么,为什么这个变量在这里,这一切应该如何工作。但如果你只有二进制文件,评论就完全没用了。

在我看来,由于评论和日志记录不同,你根本无法将它们全部搞乱。

答案 1 :(得分:1)

我认为还有讨论的余地。 有些评论可以用日志代替,有些不能。

如果我们能在减少冗余行的同时提高代码的可读性,那就太好了。我们可以将它们合二为一,而不是有评论和日志。

一个可能有效的示例是用警告替换 TODO,如下所示。以我卑微的经验,TODO 经常被搁置一旁,我忘记了它们。

https://medium.com/practical-software-testing/replace-todo-comments-in-your-code-with-warning-log-messages-maybe-7e8b5534225c

最终应该归结为回答这些问题: 这样做是否安全,是否通过记录来暴露太多代码? 实用吗? 它是否提高了代码的可读性? 它是减少了我们工作负载中的冗余还是增加了它? 它会产生过多的日志记录吗?

如果我们打算使用日志来代替 PART,不是我们所有的评论都必须注意不要让日志过载。

这是我正在尝试的范例 跟踪 - 最低级别,用日志替换注释应默认为该选项,以便日志选项可以轻松避免它。

Debug - 不用于仅评论代码问题 信息 - 用户故事级别的评论 警告 - 用于待办事项 错误 - 用于 FIXME 致命 - 请勿用于评论

另一个问题是以一种满足评论“我们为什么这样做”和日志的“这就是正在发生的事情”的方式书写,因为存在过去时现在时冲突。不会过于冗长。

例如

"protected void setup() {
    log.trace("Loading hibernate session factory");
    final StandardServiceRegistry registry = new 
    StandardServiceRegistryBuilder()
        .configure() // configures settings from hibernate.cfg.xml
        .build();
}"

“日志跟踪”取代了对注释的需要,因为它简洁地解释了正在设置的设置

保留注释是因为它将代码语义暴露给世界,例如哪个文件在做什么。