正在与朋友讨论记录器的位置。根据干净的代码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
定义要放在所有内容之上的书面规定,但我想听听您的经验和想法。
答案 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放在顶部有助于提高可读性,因为类将更加标准。