正文
命名中无需含有表示变量或参数类型的单词
如果使用如Java之类的静态类型语言, 开发者通常知道变量的类型. 由于方法的实现一般都比较简短, 所以即便是在查看一个需要推断才知道类型的本地变量, 或者在code review等静态分析器不可用的情况下, 我们也可以通过多看很少的几行代码就能知道变量的类型.
所以将类型说明加入到变量名中是多余的. 我们应该舍弃匈牙利命名法,如下:
// 不好的:
String nameString;
DockableModelessWindow dockableModelessWindow;
// 改进:
String name;
DockableModelessWindow window;
特别是对于集合来说,最好使用名词的复数形式来描述其内容, 而不是使用名词的单数形式来描述. 如果开发者更在乎集合中存储的内容, 那么变量命名应当反映这一点。
// 不好的:
List
holidayDateList;
Map
employeeRoleHashMap;
// 改进:
List
holidays;
Map
employeeRoles;
这一点也同样适用于方法的命名。方法名不需要描述它的参数及参数的类型–参数列表已经说明了这些。
// 不好的:
mergeTableCells(List
cells)
sortEventsUsingComparator(List
events,
Comparator
comparator)
// 改进:
merge(List
cells)
sort(List
events, Comparator
comparator)
这样可以帮助调用者更好的阅读:
mergeTableCells(tableCells);
sortEventsUsingComparator(events, comparator);
当然,这只是我个人的看法,欢迎大家一起讨论~~
省略命名中不是用来消除歧义的单词