use*_*453 3 java design-patterns
我和同事讨论以下代码:
private static final byte ONE_ELEMENT = 1;
private boolean isListSizeEqualsOne(List<MyClass> myList) {
return myList.size() == ONE_ELEMENT;
}
Run Code Online (Sandbox Code Playgroud)
我认为这种代码无疑会减少对一个神奇数字的警告,但同时会不必要地增加混乱.我建议改为内联全局变量:
private boolean isListSizeEqualsOne(List<MyClass> myList) {
return myList.size() == 1;
}
Run Code Online (Sandbox Code Playgroud)
有没有关于这个例子的文献?
我认为代码的问题已经在方法本身.就像注释一样,方法名称不应该表明代码的作用,而是为什么.换句话说,它应该表明它提供的功能,而不是它的实现.
也就是说,它应该表达该方法在系统中扮演的角色.所以不要isListSizeEqualsOne使用名称,而是使用表示"为什么"的名称.例如resultIsUnique,或errorReturned(如果使用API,其中包含单个元素的列表指示错误).
然后,常量的命名如下:
resultIsUnique: 不变 UNIQUE_RESULT_COUNT=1errorReturned: 不变 ERROR_RESULT_COUNT=1最后,我不认为为内联常量启用警告是个好主意.对数字使用命名常量只有合理才有意义
如果你需要其含义明显的常量(例如通过将大小与零进行比较来检查空列表),那么我认为一个简单的内联值是完全可以的.