变量命名

1.    选择好的变量名称

这好像是一个老生常谈的问题,但是code complete解析的非常细腻,还是让我们用代码来领会吧。看下面这段java代码:

x = x - xx;

xxx = aretha + SalesTax( aretha );

x = x + LateFee( x1, x ) + xxx;

x = x + Interest( x1, x );

我就一个问题,你能读懂么?这样的代码给你让你修改,你作何感受。程序命名完全没有表达出它的用途,类型,和属性。

一段java优秀的代码如下:

balance = balance - lastPayment;

monthlyTotal = NewPurchases + SalesTax( newPurchases );

balance = balance + LateFee( customerID, balance ) + monthlyTotal;

balance = balance + Interest( customerID, balance );

完成同样的功能下面这段代码明显可读性更高,更容易记住。这个例子对变量命名问题的重要性阐述的很清楚。好的变量名字至少要遵守一个原则能表示出它是什么,注意是表达出what而非how。例如对于记录一个员工信息的记录的变量可以把它叫做inputRec或者employeeDate,你觉得那一个命名会比较好一点了?当然是后者,inputRec并没有从问题的角度去思考,它表达的计算机的思维。看程序的人是从问题的角度去看的,所以后者的命名比较好。

2.    变量名称的长度

变量名称要能准确表达其含义,所用的单词不可避免的要长些。但是如果变量名称太长的话同样可读性不高,这充分说明了凡事都不能邹极端。还有如果名称太长调试程序也不方便,多长或者多短可以适合一个变量名称了?用人说是平均1016,或者820.这个应该没有定论,只要记住名称要清楚表达变量含义,长度不会看起来太长或太短就可以。举几个例子:

太长:  numberOfPeopleOnTheUsOlympicTeam

       numberOfSeatsInTheStadium

       maximumNumberOfPointsInModernOlympics

太短:  n, np, ntm

       n, ns, nsisd

      m, mp, max, points

适中:  numTeamMembers, teamMemberCount

       numSeatsInStadium, seatCount

       teamPointsMax, pointsRecord

3.    变量名称表达变量的属性

相信大多数情况下for循环的次数都是用变量i来控制,而且是在没必要为它冥思苦想取个好听的名词如count或者index,因为i的生存时间就仅仅在一个for循环里。这里长短的限制就没有了,毕竟要因地制宜。《Code complete》里说较长的变量名适合于较少使用的全局变量,较短的变量名适合局部变量或者循环变量。

c++或者c#中可以使用全局命名空间,防止命名冲突,Java中有包,但是在c或者ABAP中只有加上限定前缀了。如在一个数据库中雇员类可以命名为dbEmployee,接口中的雇员类可以命名为uiEmployee

4.    计算结果限定词

许多程序都有运算结果的限定词如:Total,Sum,Average,Max,Min,Record,String,Pointercode complete建议把这些限定词放在命名的末尾。在我看来这还是体现了一致性consistency,这是我在人月神话中获得最大的感受。

唯一的例外是num这个单词,注意numSalesSalesNum表达的是完全不同的意思,前者代表销售总额,后者num的含义相当于index。所以最好用Total或者index代替num来命名,以取消歧义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值