class 中记录器的位置应该是什么?
What should be the position of logger in the class?
正在与朋友讨论记录器的位置。根据干净代码 static final
属性必须位于 class 之上。我朋友坚持要留着,如下图:
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
定义置于一切之上的书面规则,但我想听听您的经验和想法。
最常见的方法是将其放在最上面一行。此外,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
Clean Code 还告诉您尽可能遵循通用约定,以尽量减少新开发人员理解您的代码并浏览代码所需的时间和精力.所以在这种情况下,鉴于全球惯例是以这种方式放置记录器,我会遵守它。
我倾向于先在顶部声明所有 class 通用的变量,然后是 class 特定的变量。因此,将 LOG 放在顶部有助于提高可读性,因为 classes 将更加标准。
正在与朋友讨论记录器的位置。根据干净代码 static final
属性必须位于 class 之上。我朋友坚持要留着,如下图:
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
定义置于一切之上的书面规则,但我想听听您的经验和想法。
最常见的方法是将其放在最上面一行。此外,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
Clean Code 还告诉您尽可能遵循通用约定,以尽量减少新开发人员理解您的代码并浏览代码所需的时间和精力.所以在这种情况下,鉴于全球惯例是以这种方式放置记录器,我会遵守它。
我倾向于先在顶部声明所有 class 通用的变量,然后是 class 特定的变量。因此,将 LOG 放在顶部有助于提高可读性,因为 classes 将更加标准。