记录器在课堂上的位置应该是什么?

时间:2019-02-25 23:26:54

标签: java logging coding-style

正在与朋友讨论记录器的位置。根据干净的代码static final,属性必须位于类的顶部。我的朋友坚持要保持下面的状态:

public class SomeDummyClass {
    private static final String PREFIX = "xxx";
    private static final String SUFFIX = "yyy";
    private static final Logger LOG = LoggerFactory.getLogger(SomeDummyClass.class);
    // other implementations
}

这是我的建议:

public class SomeDummyClass {
    private static final Logger LOG = LoggerFactory.getLogger(SomeDummyClass.class);
    private static final String PREFIX = "xxx";
    private static final String SUFFIX = "yyy";
    // other implementations
}

我的目的是使代码乍一看更具可读性。我知道没有log定义要放在所有内容之上的书面规定,但我想听听您的经验和想法。

2 个答案:

答案 0 :(得分:3)

最常见的方法是使其位于最上面。另外,logger不是常数,它是一个具有副作用(写入日志)的对象,因此不应完全大写。

public class SomeDummyClass {
    private static final Logger logger = LoggerFactory.getLogger(SomeDummyClass.class);

    private static final String PREFIX = "xxx";
    private static final String SUFFIX = "yyy";
    // other implementations
}

以下所有示例均遵循相同的约定:

https://www.baeldung.com/slf4j-with-log4j2-logback

https://www.stubbornjava.com/posts/logging-in-java-with-slf4j-and-logback

https://www.mkyong.com/spring-mvc/spring-mvc-logback-slf4j-example/

https://www.javacodegeeks.com/2012/04/using-slf4j-with-logback-tutorial.html

清洁代码还告诉您尽可能遵循通用约定,以最大程度地减少新开发人员理解和浏览代码所需的时间和精力。因此,在这种情况下,考虑到全球惯例是以这种方式放置记录器,我将遵守它。

答案 1 :(得分:2)

我倾向于首先声明所有类都通用的变量,然后是特定于类的变量。因此,将LOG放在顶部有助于提高可读性,因为类将更加标准。