意义明确
通过变量、函数、类名,就能了解其实际含义。需要注释加以解释的命名,就不算名副其实。
int d; //消耗的时间 | × |
int daySinceCreation; | √ |
避免误导
1. 名称不要出现容器名
例如,不要使用accountList来指一组账号。List对程序员有特殊意义,如果这个容器并非是List,会引起错误的判断,更好的命名应该是accountGroup.
2. 命名相似性尽量小一些
XYZControllerForEfficientHandlingOfStrings
XYZControllerForEfficientStorageOfStrings
上面的两个方法名相似性过大,容易造成错误,难以分辨。
使用能都读出来的名称
genymdms | × |
genTimestamp | √ |
使用能搜索的名称
以单字母命名的方法仅用于短方法中的本地变量。名称长短大小应该与其作用域大小相适应,如果变量在多处会被使用,应该赋予其易搜索的名称
成员前缀
不必要使用m_前缀来标时成员变量。应该把类和函数做的足够小,消除对前缀的需求。
类名与方法名
类名和对象名应该是名词。如Customer、WiKiPage.
方法名应该是动词或动词短语。如postPayment、deletePage.
重载构造器时,使用描述了参数的静态工厂方法名:
Complex fulcrumPoint = Complex.FromRealNumber(23.0);
接口和实现
在有一个创建形状的抽象工厂(Abstract Factory)的情况下,该工厂是一个接口,要用具体类来实现。
在命名工厂和具体类时,抽象工厂不需要前导字母I,即不需要写成IShapeFactory,我们只希望知道这是个ShapeFactory,不需要前导字母,这是滥用。而其实现类,可以命名为ShapeFactoryImp. (Imp代表Implement,即实现)
一个概念对应一个词
每个抽象概念只选取一个词并一以贯之。如fetch、retrieve、get中确定使用一个来为同种方法命名。