依稀记得曾经有人做过调查,在Java程序员编程生涯中,最困难的事情,命名排行榜首!
那么如何打败命名?
命名规范(即有意义的命名)
命名出现在类名,变量名,方法名
1.命名体现本意
不使用a,b,c等命名规则
2.提防误导性的命名
不用accountlist表示多个账号,除非它是个list容器;慎用o,0,l,1等命名
3.命名体现区分度
不使用a1,a2命名;
不使用productInfo,productData命名;
要区分名称,就要以读者能鉴别不同之处的方式来区分
。
4.命名需要读的出来
命名不造词;
利用人脑善于记忆单词的功能;
5.名称具备可搜索性
单字母名称和数字常量存在搜索的问题;
名称长短应与其作用域大小相对应。
建议:单字母名称仅用于短方法的本地变量;
6.命名避免使用编码
编码:例如 匈牙利语标记法 简称HN 以及前缀法
HN广泛用于名称长短要命的年代,编译器不做类型检查,程序员借此帮助自己记住类型。
而java是强类型语言,HN或其他编码都比较多余,既增加了学习成本,阅读的难度,且会增加误导性,也不便发音,也易错。
7.命名避免思维映射
命名不需要翻译,命名明确,容易让人理解
专业程序员:明确是王道
8.类名应该为名词或名称短语
不应该为manager,data,info。不应该为动词。
9.方法名应该为动词或动词短语
10.不使用俗语,俚语
11.一词一义
项目中一个抽象概念对应一个词,get,fetch等;
建立起通用的命名习惯;例如 DAO层统一插入为insert,查询为get,避免出现add/insert,get/search/find等多个词表示同一个意思的情况。
12.不使用双关语
add表示加法获得一个新值,则往集合中加一个单值则不能使用add,因为实际语义发生了变化。
可使用append,insert等替换
13.多使用解决领域名称
例如 jobqueue,算法名,数学术语,模式名等
14.多使用问题领域名称
DDD
15.使用语义,语境(最上乘)
16.不添加没用的语境
总结:
1.取名字最难的点在于需要良好的描述技巧和共有文化背景。
2.尊重重命名,如果命名改的很好那是已经利己利人的大事。