【发布时间】:2016-04-14 19:56:02
【问题描述】:
一个新的代码审查流程已经到位,现在我的团队决不能将字符串声明为局部变量,否则提交将无法通过代码审查。我们现在要改用常量。
所以这是绝对不允许的,即使我们确定字符串永远不会在任何其他地方使用
String operationId = "create";
这是应该改用的:
private static final String OPERATION_ID = "create";
虽然我完全同意对在代码中出现 +2 次的字符串使用常量……但我只是觉得如果字符串只使用一次就完全没有能力在适当的位置声明一个字符串是过度的。
为了清楚起见,以下所有内容在任何情况下都不允许:
String div = "div1";Catch(Exception ex){ LOGGER.log("csv file is corrupt") }字符串连接
String str = "something ...." + someVar + "something"...我们将someVar替换为%s,将整个东西声明为全局字符串,然后使用String.format(....)if( name.equals("Audi" ){....}String value = map.get("key")
有什么想法吗?我想要一些强有力的论据。我已准备好接受任何有充分理由支持的立场。
谢谢。
【问题讨论】:
-
可能更多的是代码审查问题?
-
您还可以与
List<String>互动吗? IE。String elm0 = lst.get(0)? -
@Mshnik 我看不出这有什么关系;那里没有直接的字符串。
-
我们甚至不应该将字符串定义为常量。它们都被外部化到属性文件中。 (这虽然经常令人讨厌,但确实使本地化变得更加容易)。
-
我个人认为将此要求扩展到日志记录是很疯狂的。即使您需要本地化日志文件,您也可以通过字符串作为属性键,然后您必须将其设为常量?
标签: java string coding-style constants