良好的命名規範可以為團隊合作開發推波助瀾,無論在項目開發,還是產品維護上都起到了至關重要的作用。應該說命名規範是一種約定,也是程式員之間良好溝通的橋樑。另外古人相信只要知道一個人真正的名字就會獲得淩駕於那個人之上的不可思議的力量。只要給事物想到正確的名字,它就可以帶來比代碼更強的力量。如果所有的命名都與其自然相適合,則關係清晰,含義可以推導得出,一般人的推想也能在意料之中。
命名規範在vb的學習當中介紹:
•程式碼常常要引用控制項和變數,在複雜的過程中,很難完全理解代碼中出現的所有元素。•如何確定某個語句是引用一個變數還是控制項呢?如果沒有某種約定將變數與控制項區分開來,代碼就很難閱讀。•例如:
TotalDue=LineItemTotal-Discount+TotalTax
•軟體開發人員從資料類型尾碼改為使用單字元首碼
•例如
–Dim Iwidth As Long –Dim iHeight As Integer)
•更好的命名規範最終代替了單字元首碼。這種命名規範稱為匈牙利標記法,–它使用3字元首碼來表示資料類型和控制項類型,•如何直觀地與賦予變數的資料類型相匹配的:
D i m strNameAs String
•3個字元可以實現充分的多變性,並使首碼合乎邏輯和直觀。再一次觀察一下前面給出的代碼語句:
TotalDue = LineItemTotal – Discount + TotalTax
相等價的語句
txtTotalDue.Text = curLineItemTotal –txtDiscount.Text + curTotalTaxcurTotalDue = curLineItemTotal – curDiscount + curTotalTaxtxtTotalDue.Text = txtLineItemTotal.Text – txtDiscount.Text + _txtTotalTax.Text
•這些首碼使得代碼語句更加容易理解。•只要閱讀一下語句,就能知道發生的一切,
總體規則
Ø 名字應該能夠標識事物的特性。
Ø 名字一律使用英文單詞,而不能為拼音。
Ø 名字盡量不使用縮寫,除非它是眾所周知的。
Ø 名字可以有兩個或三個單片語成,但不應多於三個,控制在3至30個字母以內。
Ø 在名字中,多個單詞用大寫第一個字母(其它字母小寫)來分隔。例如:IsSuperUser。
Ø 名字盡量使用首碼而不是尾碼。
Ø 名字中的單詞盡量使用名詞,如有動詞,也盡量放在後面。例如:FunctionUserDelete(而不是FunctionDeleteUser)。
在具體任務開發中,如果有特定的命名規範,則在相應的軟體開發計劃中予以明確定義及上報品質管理部審計組。
命名規範Variable)命名Pascal: 大小寫形式——所有單詞第一個字母大寫,其他字母小寫。
camel: 大小寫形式——除了第一個單詞,所有單詞第一個字母大寫,其他字母小寫。
在.NET編碼規範中所有變數都用camel命名形式,而不是用資料類型和m_來作首碼。
用有意義的,描述性的詞語來命名變數
- 別用縮寫。用name, address, salary等代替nam, addr, sal
- 別使用單個字母的變數象i, n, x等.使用index,
temp等
用於迴圈迭代的變數例外:
for ( int i = 0; i < count; i++ ){ ...}
- 變數名中不使用底線 (_)。
- 命名空間需按照標準的模式命名
在程式中,明確變數的作用範圍是很有必要的,所以規定:
- 全域變數命名:加首碼‘g’表示(global)。
例如:string gstrName; int giID;
- 局部變數命名:變數類型+變數名。
例如:string strName; int iID;
- 靜態變數命名:加首碼‘s’表示(static)
例如:static string sstrName; static int siID;
- 唯讀變數命名:加首碼‘ro’表示(readonly)
例如:readonly string rostrName; readonly int roiID;
補充說明:
針對異常捕獲過程中的Exception變數命名,在沒有衝突的情況下,統一命名為exp;
如果有衝突的情況下,可以用“exp”+標誌名稱,如:expSql。
Try{ //your code try{//code}catch(Exceptionexp){//your code}}catch(ExceptionexpSql){ //your code}補充:如果捕獲異常不需要作任何處理,則不需要定義Exception執行個體。
例:
try{ //your code}catch( Exception exp){}
Ø 鑒於大多數名稱都是通過串連若干單詞構造的,請使用大小寫混合的格式以簡化它們的閱讀。每個單詞的第一個字母都是大寫.
Ø 即使對於可能僅出現在幾個程式碼中的生存期很短的變數,仍然使用有意義的名稱。僅對於短迴圈索引使用單字母變數名,如 i或
j。
Ø 在變數名中使用互補對,如 min/max、begin/end和
open/close。
Ø 不要使用原義數字或原義字串,如 For (i = 1;i <= 7;i++)。而是使用命名常數,如
For (i = 1;i <= NUM_DAYS_IN_WEEK;i++)以便於維護和理解。
常量名也應當有一定的意義,格式為NOUN或NOUN_VERB。常量名均為大寫,字之間用底線分隔。
例:
Private constbool WEB_ENABLEPAGECACHE_DEFAULT =true;privateconstint WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;private constbool WEB_ENABLESSL_DEFAULT =false;
註:
變數名和常量名最多可以包含 255個字元,但是,超過 25到 30個字元的名稱比較笨拙。此外,要想取一個有實際意義的名稱,清楚地表達變數或常量的用途,25或
30個字元應當足夠了。
Class)命名
a)名字應該能夠標識事物的特性。
b)名字盡量不使用縮寫,除非它是眾所周知的。
c)名字可以有兩個或三個單片語成,但通常不應多於三個。
d) 使用Pascal,所有單詞第一個字母大寫。例如 IsSuperUser,包含ID的,ID全部大寫,如CustomerID。
e) 使用名詞或名詞短語命名類。
f)
少用縮寫。
g)不要使用底線 (_)。
例: public classFileStreampublic classButtonpublic classString
Interface)命名
和類命名規範相同,唯一區別是 介面在名字前加上“I”首碼
例: interface IDBCommand; interface IButton;
Method)命名
a)和類命名規範相同。
b)方法名需能看出它作什麼。別使用會引起誤解的名字。如果名字一目瞭然,就無需用文檔來解釋方法的功能了。
(NameSpace)命名 和類命名規範相同。