【问题标题】:Use of underscore in variable and method names在变量名和方法名中使用下划线
【发布时间】:2013-05-28 06:24:17
【问题描述】:
我对(命名约定)在变量名和方法名中使用下划线_ 作为它们的起始字母感到困惑。例如_sampleVariable 和_getUserContext()。谁能澄清一下何时使用它?
【问题讨论】:
标签:
java
variables
naming-conventions
【解决方案1】:
见 Java Naming Convetions
除变量外,所有实例、类和类常量都是大小写混合,首字母小写。内部单词以大写字母开头。变量名称不应以下划线 _ 或美元符号 $ 字符开头,即使两者都允许。
声明为类常量的变量名和 ANSI 常量名应全部大写,单词之间用下划线(“_”)分隔。 (应避免使用 ANSI 常量,以便于调试。)
【解决方案2】:
有时人们使用下划线来表示他们的变量或方法是私有的。我不喜欢这种做法。我建议你也使用 camelCase。
【解决方案3】:
引用 Robert C Martin 的 Clean code 一书,
有时警告其他程序员某些后果很有用。
例子
// Don't run unless you
// have some time to kill.
public void _testWithReallyBigFile() {
writeLinesToFile(10000000);
response.setBody(testFile);
response.readyToSend(this);
String responseString = output.toString(); assertSubString("Content-Length: 1000000000", responseString); assertTrue(bytesSent > 1000000000);
}
当然,现在我们会通过使用带有适当解释字符串的 @Ignore 属性来关闭测试用例。 @Ignore("运行时间太长").但是在 JUnit 4 之前的日子里,在方法名称前加下划线是一种常见的约定。
【解决方案4】:
通常不应使用,除非在通常是最终的所有大写常量(allStars 但 ALL_STARS)中用作分隔符。
正是因为通常不预期,下划线在生成的代码中很丰富。它也可能在一些旧代码中找到,这不是继续使用它的原因。