做有意义的区分

如果程序员只是为满足编译器或解释器的需要而写代码,就会制造麻烦.例如,因为同一作用范围内两样不同的东西不能重名,你可能会随手改掉其中一个的名称,有时干脆已错误的拼写充数,结果就是出现在更正拼写错误后导致编译器出错的情况.
光是添加数字系列或是废话远远不够,即便这足以让编译器满意,如果名称必须向异,那 其意思也应该不同才对
以数字系列命名(a1,a2,a3)是依义命名的对立面,这样的名称纯属误导–完全没有提供正确的信息;没有提供导向作者意图的线索,试看:
如果参数名改为source和destination,这个函数就会像样许多
废话是另一种没意义的区分,假设你有一个product类,如果还有一个producInfo或productData类,那他们的名称虽然不同,意思却无区别,Info和Data就像a,an和the一样,是意义含混的废话
注意,只要体现出有意义的区分,使用a和the这样的前缀就没错,例如,你可能把a用在域内变量,而把the用于函数参数,但如果你已经有一个名为zork的变量,又想调用一个名为theZork的变量,麻烦就来了
废话都是冗余,variable一词永远不应当出现在变量名中,table一词永远不应当出现在表名中,NameString会比Name号码?难道Name会是一个浮点数不成?如果是这样,就触发了关于误导的规则,设想有个名为Customer的类,还有一个CustomerObject的类,区别何在呢?哪一个是表示客户历史支付情况的最佳途径?
有个应用反应了这种状况,为当事者讳,我们改了一下,不过犯错的代码的确就是这个样子:
getActiveAccount();
getActiveAcccounts();
getActiveAccountInfo();
程序员怎么能知道该调用哪个函数呢?
如果缺少明确约定,变量moneyAmount就与money没区别,cuctomerInfo与customer没区别,accountData与account没区别,theMessage也与message没区别,要区分名称,就要以能鉴别不同之处的方式来区分