一、 環境設置
首先去除開發環境中的一些選項如下:
圖一
圖二
二、 命名規范
1) 通用性
l 標識的總長度不要超過32個字符。
l 標識符的基本語法是以字母和_開始,由字母數字及下劃線組成的單詞,第一個字符不能是數字。
l 只要合適,在變量名的末尾追加計算限定符(Avg、Sum、Min、Max、Index)。
l 在變量名中使用互補對,如 min/max、begin/end 和 open/close。
l 布爾變量名應該前加或包含 Is(is)。
l 盡量減少使用縮寫,而是使用以一致方式創建的縮寫。縮寫應該只有一個意思;同樣,每個縮寫詞也應該只有一個縮寫。例如,如果用 min 作為 minimum 的縮寫,那麼在所有地方都應這樣做;不要將 min 又用作 minute 的縮寫。
l 在命名函數時包括返回值的說明,如 GetCurrentWindowName()。
l 避免對不同的元素重用名稱,如名為 ProcessSales() 的例程和名為 iProcessSales 的變量。
l 在命名元素時避免同音異義詞(如 write 和 right),以防在檢查代碼時發生混淆。
l 在命名元素時,避免使用普遍拼錯的詞。另外,應清楚區域拼寫之間存在的差異,如 color/colour 和 check/cheque。
l 在內部范圍中避免使用與外部范圍中的名稱相同的名稱。若訪問錯誤變量,則會產生錯誤結果。若變量與同一名稱的關鍵字沖突,則必須在關鍵字前加適當的類型庫以作標識。例如,若有一個名為 date 的變量,只能通過調用 System.Date 來使用內部 Date 函數。
l 接口名稱以前綴“I”開始,後面接一個名詞或名詞詞組(如 IComponent),或者接一個描述接口行為的形容詞(如 IPersistable)。不要使用下劃線,不要過多使用縮寫,因為縮寫會引起混淆。
l 事件處理程序的名稱以一個描述事件類型的名詞開始,後面接後綴“EventHandler”,如“MouseEventHandler”。 事件參數類的名稱裡要加“EventArgs”後綴。
l 如果某事件含有“之前”或“之後”的概念,請以現在時或過去時形式使用前綴,如“ControlAdd”或“ControlAdded”。
l 單個長字符串拆分成多行寫。當一行被分為幾行時,需要將串聯運算符放在每一行的末尾。
l SQL Server中不要給存儲過程加sp 前綴/不要給用戶定義的函數加 fn_ 前綴/不要給擴展存儲過程加 xp_ 前綴。這些前綴是為標識系統保留的。將每個主要的SQL子句放在不同的行上,這樣更容易閱讀和編輯語句。
l 不要使用原義數字或原義字符串,如 For i = 1 To 7。而是使用命名常數,如 For i = 1 To NUM_DAYS_IN_WEEK 以便於維護和理解。
2) 變量命名
變量名稱命名規則:形容詞+名詞(或名詞)
l 類屬性與類屬性對應的私有變量基本一樣。
類屬性對應的私有變量是在類屬性名的前面加“_”
如:private int _PageSize;// 類屬性對應的私有變量
public int PageSize { set { _PageSize = value; } }//類屬性
l 注意大小寫要保持一致。每個單詞的第一個字母必須大寫。其它單詞的第一個字母也大寫。單詞之間不加“_”。
l 不要使用public來定義一個屬性。
l 屬性名和類名以名詞開始,如 EmployeeName 和 CarAccessory。
l 短期性(方法內私有變量/不是經常用的變量)
u 定義前加“_”
u 如:string _strSQL = null;
u 第一個單詞的第一個字母必須小寫,其它單詞第一個字母大寫。單詞之間不加“_”。
l 長期性(類私有變量/方法入口參數)
u 類私有變量:前加“_”,和類屬性對應的私有變量一樣。每個單詞的第一個字母必須大寫。其它單詞的第一個字母也大寫。單詞之間不加“_”。
如:private int _PageSizeTmp;
u 方法入口參數:第一個單詞的第一個字母必須小寫,其它單詞的第一個字母必須大寫。如果只有一個單詞組成全小寫。單詞之間不加“_”。
如:public static int SendCTTVOSMS(string mobile,string content)
public static string CallAccountHiVA(string restPhone,string userPhone)
l 定義要全部大寫。如:public static int SMS_TYPE = 2;
l 定義部分也可小寫。
如:public static string VOSMS_UserName = "88000002";
l 單詞與單詞之間加“_”分隔。
3) 函數命名
函數命名規則:動詞+名詞(或動詞),每個單詞第一個字母必須大寫。單詞之間不加“_”。
如:public static string GetOrderStatus(int sendMode,int statueID)
函數名和方法名以動詞開始,如 InitNameArray() 和 CloseDialog()。
4) 控件命名
控件命名規則:類別+名稱
類別對照表:
前綴
表示類型
frm
窗口
btn
按鈕
cbo
下拉式列表框
txt
文本輸入框
lbl
標簽
img
圖像
pic
圖片
div
DIV
grd
網格
scr
滾動條
lst
列表框
sds
SqlDataSource
ods
OleDbDataSource
如按鈕:btnSave
前綴
表示類型
b/is
Bool
c
Char
sb
Sbyte
b
Byte
n/i
Int
ui
Uint
l
Long
ul
Ulong
f
Float
d
Double
s/str
String
5) 表字段命名
l 在命名表時,用單數形式表示名稱。例如,使用 Employee,而不是 Employees。
l 在命名表的列時,不要重復表的名稱;例如,在名為 Employee 的表中避免使用名為 EmployeeLastName 的字段。
l 不要在列的名稱中包含數據類型。如果後來有必要更改數據類型,這將減少工作量。
6) Web文件目錄結構命名
l 與過程名一樣,文件和文件夾的名稱也應該精確地說明它們的用途。
l Web文件第一個單詞的首字符要小寫其它單詞的首字符要大寫。或全小寫。文件存在後,在程序中要嚴格按照文件的大小寫引入文件。目錄名稱必須全小寫。
l Web目錄結構:
根---類庫1
類庫…N
解決方案啟動文件
項目發布目錄
Web源代碼--- inc( JS目錄)
css(CSS目錄)
後台目錄
bin目錄
app_data數據庫目錄
master目錄
其它子功能目錄
app_code類文件
images圖片目錄
三、 注釋規范
1) 在文件的頭部標明文件的作者,完成時間,它所完成的主要功能。
2) 程序有過改動後,要寫上修改人、時間、簡單原因說明列表。
如:
/********************************************************************
* 誰創建的 日期 什麼功能描述
* 誰修改的 日期 什麼功能描述
* 誰修添加 日期 什麼功能描述
* 誰修刪除 日期 什麼功能描述
********************************************************************/
3) 函數等代碼中的注釋規范都按系統自動的注釋格式
如:
4) 修改代碼時,總是使代碼周圍的注釋保持最新。
5) 在每個例程的開始,提供標准的注釋樣本以指示例程的用途、假設和限制很有幫助。注釋樣本應該是解釋它為什麼存在和可以做什麼的簡短介紹。
6) 避免在代碼行的末尾添加注釋;行尾注釋使代碼更難閱讀。不過在批注變量聲明時,行尾注釋是合適的;在這種情況下,將所有行尾注釋在公共制表位處對齊。
7) 避免雜亂的注釋,如一整行星號。
8) 在部署之前,移除所有臨時或無關的注釋,以避免在日後的維護工作中產生混亂。
9) 如果需要用注釋來解釋復雜的代碼節,請檢查此代碼以確定是否應該重寫它。盡一切可能不注釋難以理解的代碼,而應該重寫它。盡管一般不應該為了使代碼更簡單以便於人們使用而犧牲性能,但必須保持性能和可維護性之間的平衡。
10) 在編寫注釋時使用完整的句子。注釋應該闡明代碼,而不應該增加多義性。
11) 在編寫代碼時就注釋,因為以後很可能沒有時間這樣做。另外,如果有機會復查已編寫的代碼,在今天看來很明顯的東西六周以後或許就不明顯了。
12) 避免多余的或不適當的注釋,如幽默的不主要的備注。
13) 使用注釋來解釋代碼的意圖。它們不應作為代碼的聯機翻譯。
14) 注釋代碼中不十分明顯的任何內容。
15) 為了防止問題反復出現,對錯誤修復和解決方法代碼總是使用注釋,尤其是在團隊環境中。
16) 對由循環和邏輯分支組成的代碼使用注釋。這些是幫助源代碼讀者的主要方面。
17) 在整個應用程序中,使用具有一致的標點和結構的統一樣式來構造注釋。
18) 用空白將注釋同注釋分隔符分開。在沒有顏色提示的情況下查看注釋時,這樣做會使注釋很明顯且容易被找到。
19) 為了防止在閱讀代碼時左右滾動源代碼編輯器,每行代碼或注釋不得超過一個顯示屏。
20) 可能多的注釋變量表示的意思。
四、 其它代碼風格/習慣
1) JS和CSS文件必需是UTF-8編碼的文件。
2) 單行的判斷代碼不需要加“{}”。
如:if (_url.Trim().Equals(String.Empty)) return -2;
能簡寫的代碼要簡寫。保證自己寫出來的代碼每一句都是有效代碼。
3) 不要使用VS的自動排版代碼功能。
4) 少用“==”運算。應該使用“.Equals”進行比較。
5) 運算符前後要空一格。如:_TotalPage = _TotalRecord / _PageSize; 這樣做是不會改變代碼意圖的,卻可以使代碼更加容易閱讀。
6) 每一個操作結束後加一個空行。所有代碼裡不能有連續的二個或二個以上的空行。
7) 將大的復雜代碼節分為較小的、易於理解的模塊。
8) 近可能的使用TAB鍵來空位。不要使用4個空格來代替TAB鍵。
9) 在頁面文件中不能定義static類型的來傳遞數據。
10)