C#編碼規范.doc
2024-07-21 02:18:44
供稿:網友
c#編碼規范---------------------------
一、類型級單位的命名
1、類。
以class聲明的類,都必須以名詞或名詞短語命名,體現類的作用。如:
class indicator
當類是一個特性(attribute)時,以attribute結尾,當類是一個異常(exception)時,以exception結尾:
class colorsetexception
class causeexceptionattribute
當類只需有一個對象實例(全局對象,比如application等),必須以class結尾,如
class screenclass
class systemclass
當類只用于作為其他類的基類,根據情況,以base結尾:
mustinherit class indicatorbase
如果定義的類是一個窗體,那么名字的后面必須加后綴form,如果是web窗體,必須加后綴page:
class printform : inherits form '* windows窗體
class startpage : inherits page '* web窗體
2、枚舉和結構
同樣必須以名詞或名詞短語命名。最好體現枚舉或結構的特點,如:
enum colorbuttons '以復數結尾,表明這是一個枚舉
structure customerinforecord '以record結尾,表明這是一個結構體
3、委派類型
普通的委派類型以描述動作的名詞命名,以體現委派類型實例的功能:
delegate sub dataseeker (byval seekstring as string)
用于事件處理的委派類型,必須以eventhandler結尾,如:
delegate sub datachangedeventhandler (byval sender as object, byval e as datachangedeventargs)
4、接口
與其他類型不同,接口必須要由i作為前綴,并用形容詞命名,突出表現實現接口的類將具有什么能力:
interface isortable
5、模塊
模塊不是類型,他的名稱除了必須以名詞命名外,必須加以后綴module:
module sharedfunctionsmodule
上述所有規則的共同特點是,每個組成名稱的詞語都必須是大寫開頭,禁止完全大寫或小寫的名稱。
二、方法和屬性的命名
1、方法
無論是函數還是子程序,方法都必須以動詞或動詞短語命名。無需區分函數和子程序,也無需指明返回類型。
sub open(byval commandstring as string)
function setcopynumber(byval copynumber as integer)
參數需要指明byval還是byref,這一點寫起來會讓程序邊長,但非常必要。如果沒有特別情況,都使用byval。參數的命名方法,參考后面“變量的命名方法”。需要重載的方法,一般不寫overloads,根據需要編寫重載的方法。
2、屬性
原則上,字段(field)是不能公開的,要訪問字段的值,一般使用屬性。屬性以簡潔清晰的名詞命名:
property concentration as single
property customer as customertypes
3、事件
事件是特殊的屬性,只能在事件處理上下文中使用。命名的原則一般是動詞或動詞的分詞,通過時態表明事件發生的時間:
event click as clickeventhandler
event colorchanged as colorchangedeventhangler
三、變量和常數
常數以表明常數意義的名詞命名,一般不區分常數的類型:
const defaultconcentration as single = 0.01
在嚴格要求的代碼中,常數以c_開頭,如c_defaultconcentration,但最好不要用它,它會帶來輸入困難。
普通類型的變量,只要用有意義的名字命名即可,不可使用簡稱和無意義的名稱諸如a,x1等,下面給出了良好的例子:
dim index as integer
dim nextmonthexpenditure as decimal
dim customername as string
不能起太長的名字,應該盡量簡潔,如下面的例子:
dim variableusedtostoresysteminformation as string '* 錯誤,太復雜了
dim systeminformation as string '* 正確,簡單明了
dim sysinfo as string '* 錯誤,過于簡單
特殊情況可以考慮一個字母的變量:
dim g as graphic
對于控件,應該指明控件的類型,方法是直接在變量后面加以類名:
friend withevents nextpagebutton as button '* 按鈕
friend withevents colorchoicerpanel as panel '* 面版
friend withevents cardfileopendialog as fileopendialog '* 文件打開對話框
等等,無需規定某種類型的變量的前綴,只需把類型寫在后面就行了,試對比下列代碼:
btncancel.text = "&cancel"
cancelbutton.text = "&cancel"
顯然后者更能使閱讀者明白變量的類型是一個按鈕。
四、標簽
標簽就是用于goto跳轉的代碼標識,由于goto并不推薦使用,所以標簽的使用也比較苛刻。標簽必須全部大寫,中間的空格用下劃線_代替,而且應該以_開頭,比如:
_a_label_example:
如此定義標簽是為了與其他代碼元素充分區別。
五、名字空間
通常,一個工程使用一個名字空間,通常不需要用namespace語句,而是在工程選項的“root namespace”中指定,使用根名字空間可以使代碼更加整齊,容易修改,這一點是vb十足的優點。名字空間的語法是:
公司名.產品名[.組件名的復數]
如:
namespace ninputer.virtualscreen
namespace ninputer.cardeditor.customecontrols
隨便起一個名字空間的名字絕對不是一個好主意,一定要遵守上述規定。
六、注釋
注釋的規則繁多,這里僅提到其中一點:正常的注釋以'*開頭,單獨的'只用來注釋暫時不用的代碼
'* 這是普通的注釋
'* 這段代碼在調試正確后加入
'if usehighspeed(g) = true then ....
這樣能夠方便的采用代碼注釋工具控制代碼的使用。