以下是一个同样内容的新程序,这里,上述问题就很容易回答了。
Balance = Balance - LastPayment;
MonthlyTotal = NewPurchases + SalesTax( NewPurchases );
Balance = Balance + LateFee( CustomerID, Balance ) + MonthlyTotal;
Balance = Balance + Interest( CustomerID,Balance );
通过比较两段代码,我们发现好的变量名是易读、易记而且是恰当的。可以使用几条通用
原则来达到这些目的。
9.1.1 命名时要考虑的最重要问题
在给变量命名时,考虑的问题是变量名称是否完全而又准确地描述了变量所代表的实体。
一个有效的方法是用自然语言(如英语)将变量所代表的实体描述出来。往往这一描述本身便
是最好的名称,因其不含缩写它很容易读懂,又由于它是对实体的全面描述。因此不会与其它
实体相混淆,而且因为它与概念相近,所以也很容易记。
比 如 要 用 一 个 变 量 来 代 表 美 国 奥 林 匹 克 队 的人数,你可以对其命名为
NumberofPeople0nTheUSOlympicTeam。对代表自1896 年以来国家队在奥林匹克运动会上最多
得分的变量可以用MaximumNumberofPointsSince1986作为其名称。而用InterestRate 或Rate作
为代表目前利率的变量名要比用r或x 好得多。
你应该可以发现这些名字的两个特点。首先,它们很容易解释。事实上,你根本不需要解
释,它们的意思是一目了然的;第二条则是其中有些名字很长,长得根本不实用。稍后我们将
讨论这一问题。
下面是一些变量名的例子,同时列出了好的和坏的。
变量代表的实体 恰当的名称 不恰当的名称
火车速度 Velocity、TrainVelocity、VolocityInMPH VELT,V,TV,X,X1
今天日期 CurrentDate、CrntDate CD,Current,C,X
每页行数 LinesPerPage LPP , Lines , X , X1
CurrentDate 和CrntDate是恰当的名字,因为它们全面准确地描述了“今天日期”这一含义。
而且,它们用的是明显的单词。程序员们往往忽视使用平常的词,而事实上这是最简单的解决
办法;CD 和C 太简短了,说明不了任何问题;Current 并没有说明现在的什么?是总统还是赌
马的结果?Date像是一个不错的名字,但究竟是什么时候的Date?是基督出生那天吗?X,X1
在任何情况下几乎都是不好的名字,因为它们通常都是代表未知量的,如果你要它代表其它实
体时,往往会引起误会。
9.1.2 面向问题
一个好记的名字通常是面向问题而不是解决问题的。一个恰当的名字往往说明是“什么”
而不是“怎样”。通常,如果一个名称指向计算的一方面而不是指向问题,那么可以认为之是个
“怎样”而不是“什么”的名称。要避免使用这种名称而要使用面向问题的名称。
雇员数据的记录可称为InputRec或EmPloyeeData,InputRec 是一个计算机术语,指的是输
入和记录;EmPloyeeData指的是问题域而不是计算方面。同样,对一个表示打印机状态的变量