7

只是一个关于形式的快速问题。

我正在记录各种错误消息,想知道是否应该在日志调用中为消息创建一个新字符串,或者在我用来存储其他字符串常量的接口中创建一个常量字符串,然后引用它。我使用的是代码分析器代码,它暗示后者说创建字符串常量并引用它是更好的做法,即使字符串只使用一次。我只是想知道是否确实如此?

提前致谢

4

2 回答 2

3

我不确定您使用什么分析工具或如何配置它,但这些建议对我来说似乎无效。Java 编译器已经为您创建了字符串常量(当代码调用 log 方法时,它通常不会分配新的 String 实例),那么手动完成这项工作有什么意义呢?

如果将字符串常量放入接口中,则可以在类之间共享它们,但不能以您认为的方式:Java 编译器会将常量的值复制到正在使用它的代码中(因此生成的字节码不会有不再是对接口的引用!)

我的建议:关闭这个误导性警告。

于 2013-03-12T13:52:55.047 回答
2

日志应该易于添加和删除;只需提供一个非常薄的层。然后可能使用了 MessageFormats,当替换为常量名称时,它们容易出错/无法检查。

字符串常量也被导入,然后当常量改变时不再需要检测改变。

日志字符串也不是很严格,它们自己的信息量很大。

最好将这些字符串标记为不可国际化。

于 2013-03-12T13:55:18.817 回答