借助互聯網更有效的滿足顧客的需求和願望,實現企業營銷目的

With the help of the Internet, we can more effectively meet the needs and aspirations of customers, and achieve the purpose of enterprise marketing

編程命名中的7+1個提示


1.- 變量應該是盡可能(néng)的望文知意。千萬不要使用教材中的命名方式。

  • 好(hǎo)的變量 daysDateRange, flightNumber, carColor.
  • 壞的變量: days, dRange, temp, data, aux…

在我們的日常工作中,有很大數量的開(kāi)發(fā)人員喜歡使用短的變量名,而不是有含義的變量名。這(zhè)主要是因爲我們大學(xué)教科書的那些示例所造成(chéng)的,人都(dōu)是先入爲主,所以,教科書中的那些很抽象,帶著(zhe)演示的變量命名影響了我們一代又一代的程序員,并影響了他們很多年。雖然那些短的,教材式的變量名,可能(néng)會(huì)讓你少打一些字,但其實,這(zhè)是非常非常不好(hǎo)的。因爲軟件的維護成(chéng)本遠遠大于了軟件的開(kāi)發(fā)成(chéng)本,如果你不取一個好(hǎo)的一點的變量名,那麼(me)當進(jìn)行代碼評審時,當進(jìn)行bug fixing時,當進(jìn)行代碼重構時,當進(jìn)行代碼維護時,你的某個變量名可能(néng)會(huì)讓你一頭霧水,不知道(dào)所措,還(hái)可以會(huì)讓你走入陷阱,造成(chéng)更大的時間成(chéng)本。所以,一個可閱讀的代碼必然和那些不錯的變量名分不開(kāi),而這(zhè)也能(néng)讓你的軟件間接上有更好(hǎo)的質量。

 

2.- 變量名不要太長(cháng),盡可能(néng)地簡短

隻有簡單和簡短的變量名才是容易閱讀的。因爲你的變量名一定會(huì)用于程序語句中,所以,爲了讓你的程序語句看起(qǐ)來的簡短,你的變量名也應該短一點,不然寫出來的一個表達式就會(huì)顯得很複雜。

當然,在有些時候,一個有含義的變量名和一個簡短的變量名可能(néng)存在一些沖突。這(zhè)相當鍛煉我們的語言能(néng)力——如果有最精煉的詞語來表達最豐富的含義。如果實在做不到,那麼(me),取一個有含義的變量名要比取一個簡短的變量名更好(hǎo)一些。不管怎麼(me)樣(yàng),我們希望即簡短又有豐富的含義,但如果不能(néng)兩(liǎng)全,那有含義優先級更高一些。

  • 壞的變量:howLonDoesItTakeToOpenTheDoor, howBigIsTheMaterial…
  • 好(hǎo)的變量:timeToOpenTheDoor, MaterialSize.

3.- 可以使用縮寫,但需要有一些注釋

有一些時候,我們需要使用一些縮寫來命名變量,比如:用usr來表示user,用gp來表示group,用conf來表示configuration,用cwd來表示current working directory,用ptr來代碼point to reference,等等,等等。縮寫一般要用在大家可以看得懂的,而不是爲了縮寫而縮短一個單詞,當然,如果你把縮寫後(hòu)的變量名加上注釋,那就更加穩妥了。關于一些約定俗成(chéng)的縮寫,可參看本文的附錄一

4.- 使用合适的匈牙利命名規則

這(zhè)裡(lǐ)有一篇非常不錯的英文文章告訴你 《什麼(me)是合适的匈牙利命名 》,這(zhè)篇文章同時還(hái)告訴你如何去用他。基本上來說,匈牙利命名法主要是爲變量加上某種(zhǒng)前綴以标識這(zhè)個變量的類型,或是一種(zhǒng)方法的功能(néng)。其基本原則是:變量名=屬性+類型+對(duì)象描述。

比如:在描述類型方面(miàn):指針p,函數fn,長(cháng)整型 l,布爾b,浮點型(有時也指文件)f,雙字 dw,字符串 sz,短整型 n,雙精度浮點 d,無符号 u……等等。關于更多的命名規範,請參見附錄二

注意,匈牙利命名也是有不好(hǎo)的地方的,比如你要把一個整形改成(chéng)一個浮點型,你除了要改變這(zhè)個變量的類型,你還(hái)要改變這(zhè)個變量的名字。這(zhè)是相當麻煩的。而且,在某些時候,這(zhè)種(zhǒng)前綴式的命名可以反而讓你不知所措。另外,在C++中,有了類以後(hòu),這(zhè)種(zhǒng)命名方法就顯得不容易去實施了。所以,合适地使用匈牙利命名方式背後(hòu)的思想是很關鍵的。

5.- 不要使用反邏輯來命名

  • 好(hǎo)的命名:  IsEnabled.
  • 壞的命名: IsNotEnabled.

在閱讀的時候,我們更喜歡正向(xiàng)的邏輯,而不是反向(xiàng)邏輯。這(zhè)一規則不單單的命名,在條件語句中,我們也是要盡量不要使用這(zhè)種(zhǒng)反面(miàn)的邏輯。如:if (! (isAdmin || isUser)),這(zhè)樣(yàng)的語句很不符合人讀代碼的習慣,寫成(chéng)這(zhè)樣(yàng)會(huì)更好(hǎo)一些——if (!isAdmin && !isUser)。

6.- 保持一緻性

保持所有代碼的一緻性。使用相同的命名規則。這(zhè)外世界上沒(méi)有最好(hǎo)的命名規範。但有一點是可以确認的,那就是在一個代碼庫中,應該使用一緻的命名規則,即使這(zhè)個規則不那麼(me)好(hǎo),但整個團隊使用一緻的就是好(hǎo)的。

7.- 附和應用程序的領域術語

在不同的領域中,不同的觀念會(huì)有非常特别和不同的意思。例如:單詞“order”并不總是意味著(zhe)“次順”,有些時候,其意味著(zhe)“訂單”,有些時候,意味著(zhe)“命令”,有些時候,意爲著(zhe)“規則”。所以,在某個領域中,某些單詞會(huì)有不同的含義,所以,這(zhè)需要我們的命令去附和這(zhè)些領域。

 

黃金法則- 花一些時間去思考去權衡一下你的變量名

當你設計好(hǎo)一個的變量名一個函數名的時候,别著(zhe)急去使用他,停下來,想一想,這(zhè)個變量名是否合适,是否還(hái)有更好(hǎo)的?也許你正在使用的是一個很不好(hǎo)的變量名。有些時候,需要我們權衡利弊一下,可能(néng)還(hái)要去和同事(shì)讨論一下。

總之,變量名是編程的第一步,第一步走好(hǎo)了,後(hòu)面(miàn)才走得好(hǎo)。試想,無論是你或你的同事(shì)在使用一些好(hǎo)的變量名編程是一件多麼(me)輕松的事(shì)啊。

copyright © 丹陽微淘信息技術有限公司 版權所有