在Java中,静态final变量是常量,按照惯例它们应该是大写的。然而,我看到大多数人都用小写来声明记录器,这在PMD中是一种违反。
e.g:
private static final Logger logger = Logger.getLogger(MyClass.class);
只要搜索谷歌或“静态最终记录器”,你会看到这自己。
我们应该使用LOGGER吗?
在Java中,静态final变量是常量,按照惯例它们应该是大写的。然而,我看到大多数人都用小写来声明记录器,这在PMD中是一种违反。
e.g:
private static final Logger logger = Logger.getLogger(MyClass.class);
只要搜索谷歌或“静态最终记录器”,你会看到这自己。
我们应该使用LOGGER吗?
当前回答
如果你的编码标准——如果你有的话——说它应该是大写的,那么是的。
我看不出任何严格的理由。我认为这完全取决于你个人的喜好。你公司的编码标准。
顺便说一句:我更喜欢“LOGGER”;-)
其他回答
记录器引用不是一个常量,而是一个最终引用,不应该是大写的。常量值应该是大写的。
private static final Logger logger = Logger.getLogger(MyClass.class);
private static final double MY_CONSTANT = 0.0;
如果你谷歌这个,你可能会发现在某些情况下,记录器没有被定义为静态final。再快速复制粘贴一下,也许就能解释了。
我们在所有代码中都使用了LOGGER,这与我们的命名约定相对应(CheckStyle对此很满意)。
我们甚至更进一步,利用Eclipse中严格的命名约定。 我们用一个代码模板创建一个新类:
// private static final Logger LOGGER = Logger.getLogger(${enclosing_type}.class);
日志记录器被注释掉,因为最初我们不需要它。但是如果我们以后需要它,我们只需取消注释它。
然后,在代码中,我们使用期望该记录器出现的代码模板。 使用try-catch模板的示例:
try {
${cursor} or some other template
} catch (Exception t) {
LOGGER.error("${methodName} ${method parameters}", t);
}
我们有更多的模板使用它。
严格的约定使我们能够更高效地使用代码模板。
为了给crunchdog的答案增加更多的价值,Java编码风格指南在3.3段字段命名中说明了这一点
作为常量使用的字段名称应该全部用大写字母,用下划线分隔单词。以下被认为是常量: 所有静态final基元类型(记住,所有接口字段本质上都是静态final)。 所有静态最终对象引用类型,后面永远没有“。”(点)。 所有静态最终数组后面永远没有“[”(开始方括号)。 例子: Min_value, max_buffer_size, options_file_name
按照这种约定,logger是第2点中所述的静态最终对象引用,但因为每次使用它时都跟在“。”后面,所以不能将其视为常量,因此应该小写。
如果你的编码标准——如果你有的话——说它应该是大写的,那么是的。
我看不出任何严格的理由。我认为这完全取决于你个人的喜好。你公司的编码标准。
顺便说一句:我更喜欢“LOGGER”;-)
如果您正在使用自动化工具来检查您的编码标准,并且它违反了上述标准,那么它或标准应该被修复。如果您正在使用外部标准,请修复代码。
Sun Java中的约定是大写的公共静态常量。显然,记录器不是常量,而是表示一个可变的东西(否则就没有必要调用它的方法,希望发生一些事情);对于非常数终场没有特定的标准。