一. 名副其实:
变量、函数或者类名,应当明确,如果需要靠注释来解释补充,那就不是名副其实。
例如:
int d; //消逝的时间,以日计
这里的d什么也没说明。没有引起时间消逝感,更别说以日计了。我们应该选择指明了计量对象,和计量单位的名称:
int elapsedTimeInDays;
int fileAgeInDays;
选择体现本意的名称能让人更容易理解和修改代码。
二.避免误导:
别用accountList来命名一组账号,List对程序员来讲有特殊的意义,会引起错误的判断。
所以用accountGroup 或 bunchOfAccounts,甚至直接用accounts都会好些。
提防使用不同之处较小的名称。想要区分模块某处的 XYZControllerForEfficientHandlingOfString
和 XYZControllerForEfficientStorageOfString,会花很长时间,因为外形太相近了。
三.做有意义的区分:
以数字系列命名(a1,a2,…aN)是以义命名的对立面。这样的命名纯属误导——完全没有提供正确信息。
废话是另一种没有意义的区分。例如:
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
程序员怎么知道该调用哪个函数呢?
要区分名称,就要以读者能鉴别不同之处的方式来区分。
四.使用可以读的出来的名称:
如果名称读不出来,讨论的时候就会像个傻鸟。
比较:
class DtaRcrd102{
private Date genymdhms;
private Date modymdhms;
private final String pszqint = “102”;
…
}
和
class Customer{
private Date generationTimestamp;
private Date modificationTimestamp;
private final String recordId = “102”;
…
}
五.使用可以搜索的名称:
单字母名称和数字常量有个问题,就是很难在一大篇文字中搜索出来。
找 MAX_CLASSES_PER_STUDENT很容易,但是想找数字7或者字母e可就难多了。
六.避免使用编码:
接口和实现 ISharpeFactory 远远不如 SharpeFactoryImp
七.避免思维映射:
不要让读者在脑中把你的名称翻译为他们所熟知的名称。
单字母变量名称就是个问题。比如 i ,如果你能指望读者将其理解为 r 代表不包含主机名的小写版url的话。
仅仅是因为有了a 和b,就要取名为c,是不合理的。
专业的程序员明白, 明确是王道 。编写其他人能理解的代码。
八.类名:
类名和对象名应该是名词或名词短语,如Customer、Acoount。
避免使用Manager、Processor、Data或Info这样的类名。
类名不应为 动词。
九.方法名:
方法名应该为动词或动词短语,如postPayment、deletePage或sava。
属性访问器、修改器和断言应该根据其值命名,并加上get、set、is前缀。
十.每个概念对应一个词:
给每个抽象概念选一个词,并一以贯之。