2.1 介绍

2.2 名副其实

名称告诉是什么
一旦发现有更好的名称,就换掉旧的

2.3 避免误导

  • 名称中写出容器类型名,如List,用 accountGroup 不用 accountList
  • 使用不同之处较小的名称

2.4 做有意义的区分

数字系列

account1, account2

废话

  • 杜绝废话 name和nameString, customer和customerInfo, money和moneyAccount
  • Info和Data是废话

2.5 使用读得出来的名称

2.6 使用可搜索的名称

单字母名称仅用于短方法中的本地变量。名称长短应与其作用域大小相对应。

2.7 避免使用编码

不要把类型和作用域编进名称里面

2.7.1 不要用类型编码

phoneNumber, phoneString

2.7.2 成员前缀

不要用前缀来表明成员变量,用足够小的类或函数替代

2.7.3 接口和实现

特殊情况,如抽象工厂,用实现 shapeFactoryImp ,不用 IshapeFactory
即:不要对接口编码

2.8 避免思维映射
让其他人也能理解

2.9 类名

名词 Customer , WikiPage , Account , AddressParser
避免 Manager , Processor , Data , Info

2.10 方法名

动词 get , set , is
命名方式保持一致,使用与模块名一脉相承的短语、名词和动词给函数命名。——使用类似的措辞。
重载构造器,使用描述了参数的静态工厂方法名,不要直接new,可以把构造器设置为private,强制使用这种命名手段。

  1. public class Complex {
  2. private float realNumber;
  3. public static fromRealNumber(float realNumber) {
  4. Complex complex = new Complex();
  5. complex.setRealNumber(realNumber);
  6. return complex;
  7. }
  8. private Complext() {}
  9. }

2.11 别扮可爱

2.12 每个概念对应一个词

例如使用 fetch , retrieve , get 来给在多个类中的同种方法命名。
没有本质上的区别,get是美式英语,fetch是英式英语,只要统一一种即可。

2.13 别用双关语

例如相加用了 add ,添加就另用 insertappend

2.14 使用解决方案领域名称

用技术名称

2.15 使用源自所涉问题领域的名称

即业务。当代码与所涉问题领域贴近时,

2.16 添加有意义的语境

  • 优先创建类,最后一招增加前缀
  • 一组变量摸不清语境,则把这组变量作为一个类的成员字段。 代码清单2-2

    2.17 不要添加没用的语境

    只要段名称足够清楚,就比长名称好。

    对于Address类的实体来说,accountAddress和customerAddress都是不错的名称,不过用 在类名上就不太好了。Address是个好类名。如果需要与MAC地址、端口地址和web地址相区别,我会考虑使用postalAddress, Mac和URI