有一条规则说:
表示常量(最终变量)的名称必须全部使用下划线来分隔单词(取自http://geosoft.no/development/javastyle.html)
这适用于原始类型,如int或字符串:
private static final int MAX_COUNT = 10;
Run Code Online (Sandbox Code Playgroud)
但是什么是非原始类型?在大多数情况下,我见过以下内容:
private static final Logger log = Logger.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)
或者在单例中,实例变量不是大写的.
问题是声明这些类型的变量(如日志和实例)的正确方法是什么?
我在浏览Java代码约定时遇到了这个小小的问题:
声明类常量和ANSI常量的变量名称应全部为大写,并用下划线("_")分隔.(为了便于调试,应避免使用ANSI常量.)
(从这里开始.)
这个文件中提到的这些"ANSI常量"是什么?他们如何使调试更难?
该文本听起来好像在"变量声明类常量"(我将其解释为普通static final变量)和这些"ANSI常量" 之间存在二分法,但我不知道在Java中声明常量的任何方法除了让他们static final变量.
我知道Oracle Java命名约定,并且我已经阅读了类似的SO问题(比如Java常量变量,命名约定)但是我应该使用什么命名来实现常量函数?
例如,如果我有功能界面
public interface StringDecider {
public boolean decide(String str);
}
Run Code Online (Sandbox Code Playgroud)
现在我用它来定义一个常量函数.命名应该是"上蛇案",如
public final static StringDecider STRING_NOT_EMPTY = (str) -> (str!=null && !str.isEmpty());
STRING_NOT_EMPTY.decide("Example");
Run Code Online (Sandbox Code Playgroud)
或骆驼案
public final static StringDecider stringNotEmpty = (str) -> (str!=null && !str.isEmpty());
stringNotEmpty.decide("Example");
Run Code Online (Sandbox Code Playgroud)