11章-變數命名(一)

來源:互聯網
上載者:User

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.    變數名稱的長度

變數名稱要能準確表達其含義,所用的單詞不可避免的要長些。但是如果變數名稱太長的話同樣可讀性不高,這充分說明了凡事都不能鄒極端。還有如果名稱太長偵錯工具也不方便,多長或者多短可以適合一個變數名稱了?用人說是平均10到16,或者8到20.這個應該沒有定論,只要記住名稱要清楚表達變數含義,長度不會看起來太長或太短就可以。舉幾個例子:

太長:  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,Pointer,code complete建議把這些限定詞放在命名的末尾。在我看來這還是體現了一致性consistency,這是我在人月神話中獲得最大的感受。

唯一的例外是num這個單詞,注意numSales和SalesNum表達的是完全不同的意思,前者代表銷售總額,後者num的含義相當於index。所以最好用Total或者index代替num來命名,以取消歧義。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.