物理結構:
1. 保持檔案夾的名稱獨立性,盡量以名稱空間一致,如Net名稱空間對應Net檔案夾
2. 檔案名稱儘可能的說明檔案的內容,如XmlFileLoader.cs 表示該檔案中有一個叫XmlFileLoader的類
3. 建立版本檔案夾,如R1, R2, D1, D2, 最好能使用代碼管理工具
邏輯結構:
1. 使用名稱空間來分割大邏輯模組,如Net名稱空間包含對網路的作業碼
2. 使用介面來銜接模組
3. 類功能儘可能獨立,並盡量採用模式來設計
代碼結構:
1. 命名:
名稱空間:全名稱,首字母大寫
類名:全名稱,首字母大寫
私人變數:“_” 開頭,簡寫3個字元或全名稱,第一個單詞小寫後面單字首大寫
局部變數:簡寫3個字元或全名稱,第一個單詞小寫後面單字首大寫
迴圈變數:i, j, k, index, item,
函數名:簡寫3個字元或全名稱,第一個單詞全名稱首字母大寫,後面可以簡寫3個字元
2. 換行:
大括弧換行風格一致,如
{ {
} }
單行長度堅持以86個字元換行,便於列印顯示
函數參數換行對齊 func( string a,
string b)
if else 條件不換行,if (a)
else if (b)
else
3. 注釋
行頂注釋,並且只使用//
類名必須注釋
所有public函數都必須要注釋,盡量使用自說明單詞來起函數名和類名
盡量使用summary注釋
對函數的注釋要說明參數的預設值和可能產生失敗的情況,並說明傳回值意義
使用region來分塊
4. 縮排對齊
聲明等號對齊 string a = new string();
string abc = new string();
條件判斷以變數對齊
if ( a == b &&
c == d)
使用Tab縮排,而不是空格
5. 建議
string類型變數加尾綴str
集合變數使用複數名詞string items, 或集合string itemLst 或數組string itemArr
可變字串操作使用StringBuilder類操作
控制項名不要使用縮寫開頭,直接用有意義的全名稱
bool型變數命名以is開頭,bool isLoaded
盡量使用is, as關鍵字