有意义的命名
起个好名字的简单规则
名副其实
- 命名应准确的描述这个变量: 为什么存在,做了什么事,该怎么用.降低变量的模糊度
- 一旦发现更好的名称,就替换掉旧的
避免误导
-
变量的外形要容易区分
bad: cosnt XYZControllerForEfficientHandlingOfStrings = 1; const XYZControllerForEfficientStrageOfStrings = 2;
-
变量所表达的意思要容易区分,禁止混用data和info,a和the
bad: prodctInfo与prodctData
-
减少不必要的描述
- table永远不要出现在表名中
- nameString,后缀string就是完全多余的描述
易读
便于见字照着拼读,无论是阅读代码还是讨论代码的时候,非常有用
避免重复
重复的命名空间的出现是会让读者很恼火的,因为识别重复是不容易的,这样的重复也会导致问题,让代码因此而臃肿,且当需要修改时很可能要修改所有重复的地方
bad:
setUp()
suiteSetUp()
tearDown()
suiteTearDown()
使用搜的到的名称
对于单字母或者数字,再搜索的时候很难单独搜到,它们往往是其他代码的一部分,在这方面长名称要胜于短名称,而名称的长短应该与其作用域大小相对应.
找Max_CLASSES_PER_STUDENT容易,找7就难了
避免使用额外的编码
不要将类型,作用域,各种前导字母,前缀编写进名称里面,容易让人在理解必要的代码之外分出来精力理解这些额外的编码
,同时带编码的词语也不便发音
避免产生思维映射
在循环中通常会使用i,j,k,item
等惯用字母进行操作,但他们实际上并没有表达明确表达出自己是干什么的,需要读者在脑中映射为具体的真实概念;例如一个r
表示的是不包含主机名和模式的小写url
的话,读这样的代码压力一定很大
不只在循环中,在所有编码中都要避免使读者产生思维映射
类名
类名和对象名应该是名词或名词短语,不应该是动词,应该避免Data,Info,Processor,Manager这样的类名
方法名
方法名应当是动词或者动词短语
别耍小聪明
不要用俗话,俚语来命名,虽然有时后挺好玩,但是宁可明确,毋为好玩
每个概念对应一个词
每个抽象概念固定使用一个词来描述,对管理者
这个类命名时,如果即用Manager
来命名,在另一个地方又用Admin
来命名,这会让人感到疑惑: 为什么不使用一个命名呢,难道是表示的意思不同?从而产生理解负担
别用双关语
对于一词多义的单词尽量不要使用,保证一词一义
使用解决方案领域名称
只用程序员才会阅读你的代码,尽量使用计算机领域的术语,而非问题出现领域的术语
使用问题涉及领域的名称
若不能用熟悉的术语进行命名,那么应使用所涉及问题领域的而来的名称,这能保证有迹可循