- 使用有意义的、直观的、具体的命名方式,对于需要语境背景才能理解的多义单词,尽量不要单独作为变量名,例如name -> studentName(当然,如果name本身是作为Student类的一个属性,就不用这么做了,因为这种从属关系已经为它赋予了可读性)
- 拒绝魔法值,使用大写字母+下换线的常量
- 返回值为boolean类型的方法,建议命名为isXXX()的形式
- 避免为两个不同的变量起极为相似的名字
- 在命名时避免使用无意义的废话单词,例如Person ≈ PersonData ≈ PersonInfo,这三种命名方式是不能够帮助读者快速理解其功能与含义的
- 避免使用非广泛认知的自定义缩写,比如将一个用来生成年月日时分秒的字符串的方法命名为genymhms
- 在给变量命名时,避免在变量名中描述变量的数据类型;不要用IXxx(以大写I作为开头)来作为一个自定义接口的名称,可以使用xxxImpl来作为某个接口的实现类的名称
- 在有具体业务背景的循环代码中,不要使用i j k来作为迭代变量
- 类名和接口名应当是名词或名词性短语,而非动词;相反,方法名应该是动词或者动词性质的短语
- 确保你在命名过程中使用过的单词只有一个含义,并且只用这一个单词来表达该语义。比如,你使用add来表示“添加”,那你就不能再用add来表示“拼接”、“加法运算”,并且,所有的“添加”都应该用add来表示。
- 尽量使用计算机领域的词汇来进行命名,实在无法用计算机词汇进行命名的场景,用业务领域的专有名词来进行命名
- 善用抽象思维,有意识的将一组具有事实关联关系的实体(变量)及相关的操作(方法)组合起来,抽象成类,这样每个实体和操作就有了语义背景,阅读者可以根据clazz.field或者clazz.method的形式快速理解你代码的业务含义;但是,也不需要过度抽象,在可以很轻松的表达含义的情况下,变量名能短就短,能不创建类就不创建类