C#開發命名規範
轉載自:C#開發命名規範
學習C#之初,始終不知道怎麼命名比較好,很多時候無從命名,終於有一天我整理了一份命名規範文件,自此我就是按照這個命名規範書寫程式碼,整潔度無可言表,拙劣之處請大家斧正,愚某虛心接受,如有雷同,不勝榮幸
C#語言開發規範
作者ching
1. 命名規範
a) 類
【規則1-1】使用Pascal規則命名類名,即首字母要大寫。
eg:
Class Test
{
...
}
【規則1-2】使用能夠反映類功能的名詞或名詞短語命名類。
【規則1-3】不要使用“I”、“C”、“_”等特定含義字首。
【規則1-4】自定義異常類應以Exception結尾。
eg:
Class TestException
{
...
}
【規則1-5】檔名要能反映類的內容,最好是和類同名。
b) 類欄位(類成員)
【規則2-1】用camel規則來命名類成員變數名稱,即首單詞(或單詞縮寫)小寫。
【規則2-2】類欄位變數名前可加“_”字首。
【規則2-3】堅決禁止在普通變數前加“m_”(這是VC老命名規則)。
eg:
Class Test
{
privatestring myName;
privatestring _myCoCo;
...
}
c)方法
【規則3-1】方法名採用Pascal規則,第一個字元要大寫。
【規則3-2】方法名應使用動詞或動詞短語。
【規則3-3】類中訪問修飾符或功能相同的方法應該放在一起, 且公共或實現介面的方法在前。
eg:
Class Test
{
...
publicvoid GetData(...)
{
...
}
privatevoid GetName(...)
{
...
}
privatestatic void GetCount(...)
{
...
}
}
d)屬性
【規則4-1】使用名詞定義屬性,屬性使用Pascal規則,首字元大寫
【規則4-2】屬性和相應欄位名稱要關聯, 可以使用“重構”選單來生成屬性。
eg:
Class Test
{
private string myName;
public string MyName
{
set
{
myName = Value;
}
get
{
return myName;
}
}
}
e)引數
【規則5-1】引數採用camel規則命名,且首字元小寫。
【規則5-2】使用描述性引數名稱,引數名稱應當具有最夠的說明性。
【規則5-3】不要給引數加匈牙利語型別表示法的字首。
【規則5-4】檢查方法所有輸入引數的有效性。
eg:
ClassTest
{
public void GetData(string name,string strFlag)
{
...
}
}
f)常量
【規則6-1】只讀常量使用Pascal命名規則,即首字母大寫。
【規則6-2】列舉名使用Pascal規則命名,列舉成員本質屬於常量,命名規則同上。
【規則6-3】列舉值從小到大順序定義。
【規則6-4】靜態欄位或屬性採用Pascal規則,即首字元大寫。
eg:
ClassTest
{
public const double Pi = 3.14159365753;
private readonly double Pai = 3.14159365753;
}
g)介面
【規則7-1】介面定義使用Pascal規則,且必須以大寫“I”開頭。
【規則7-2】介面名稱要有意義,中間不要有下劃線“_”等字元。
【規則7-3】如果類實現了介面,名稱儘量和介面相同, 只是省掉“I”字元。
eg:注意這裡的介面修飾符只能用public和internal
interfaceITest
{
...
}
h)事件
【規則8-1】委託名稱採用Pascal規則,即首字元大寫。
【規則8-2】定義事件的委託要使用EventHandler字尾,且包括sender和e兩個引數。
【規則8-3】事件用到的引數,名稱要帶EventArgs字尾。
eg:
ClassTest
{
private delegate void DoTask();
private event DoTask DoTaskEventHandler;
private event DoTask DoTaskEventHandler(Object sender,EventArgse);
private event DoTaskDoTaskEventHandler2(string strEventArgs)
{
...
}
...
}
i) 名稱空間
【規則9-1】名稱空間名稱採用Pascal規則,且首字元大寫。
【規則9-2】名稱空間名稱儘量反映其內容所提供的整體功能。
eg:
namespace MyTest
{
ClassTest
{
...
}
...
}
2. 註釋規範
a)檔案頭部註釋
【規則1-1】檔案都包含檔案頭, 要說明檔名、作者、建立時間、變更記錄。
【規則1-2】推薦採用.NET形式書寫頭部註釋。(待考查)
b)類及其成員註釋
【規則2-1】對方法和類使用“///”三斜線註釋。
【規則2-2】程式碼行文註釋採用“//”和“/**/”進行,應該儘量說明問題。
3.行文規範
a)縮寫規範
【規則1-1】識別符號應當直觀可望文知意,不提倡使用任何縮寫。
【規則1-2】字串變數推薦是用“str”或“s”開頭,採用string.Empty來初始化。
【規則1-3】普通物件可以以“obj”開頭。
【規則1-4】縮寫可自行定義,一般取單詞的前/後字元組成,以含義直觀為準則。
【規則1-5】一般情況下不要讓縮寫破壞識別符號的含義。
b)排版
【規則2-1】每行語句至少佔一行,如果語句過長(超過一屏),則該語句斷為兩行顯示。
【規則2-2】把相似的內容放在一起,比如欄位、屬性、方法、事件等,使用“#region--#endregion”命令分組。
【規則2-3】多個程式元素進行對等操作時, 操作符之前、之後或者前後都要加空格。
【規則2-4】每個方法的源程式行數原則上應該少於200行。(如果超過過多,則需要另寫一方法)
【規則2-5】語句巢狀層次不得超過3層。
【規則2-6】避免相同的程式碼段在多個地方出現。(儘量避免程式碼重複,能複用則複用)
c)語句結構
【規則3-1】如果使用了異常結構,一定要處理異常, 一般是要寫日誌檔案。
【規則3-2】分支語句不應該使用複雜長條件, 應該將長條件封裝成方法。
【規則3-3】switch語句,case後面必須接break。
【規則3-4】禁止使用goto語句進行跳轉。
【規則3-5】行文中嚴禁出現“魔數”,特定含義的常數必須定義成列舉或常量。
【規則3-6】不同型別的操作符混合使用時,使用括號給出優先順序。
【規則3-7】不允許使用複雜的操作符組合等。
【規則3-8】迴圈、判斷語句的程式塊部分用花括號括起來, 即使只有一條語句。(return;待議)
【規則3-9】在switch語句中總是要有default字句,建議使用斷言。
【規則3-10】每個類和方法完成單一的功能,不設計多用途面面俱到的類或方法。
【規則3-11】嚴禁使用未經初始化的變數,變數通常使用構造方法來初始。
d)程式碼縮排
【規則4-1】碰到大括號要換行。
【規則4-2】不允許使用Java中的括號換行規範。
e)大小寫
【規則5-1】不要建立名稱相同,但大小寫區別的任何元素。
【規則5-2】應當大寫僅有兩個字元的縮寫。(如果只有兩個字元,則都大寫)
【規則5-3】不要把易混淆的數字和字元放在一起。
【規則5-4】使用英文命名識別符號。
f)重名規範
【規則6-1】不允許變數名、類名、屬性名、 方法名等與系統識別符號重名。(系統識別符號見附表)
g)SQL編碼規範
【規則7-1】SQL語句全部大寫。(本人的習慣是小寫,為了效能,最好是大寫,我自己也得把習慣改改咯,哈哈哈)
【規則7-2】對較為複雜的SQL語句加上註釋,說明其功能。
【規則7-3】連線符OR、IN、AND、以及=、<=、>=等前後加空格。
【規則7-4】使用明確的列代替 SELECT *。
h)軟體架構
【規則8-1】資料庫中每一張表對應一個實體類/資料傳輸物件(DTO)。
【規則8-2】實體類名稱使用表名,也可帶有Dto字尾。
【規則8-3】三層架構應當合理使用,不應生搬硬套。
【規則8-4】三層架構元素推薦使用字尾:
資料傳輸物件 XxxxDto
DAO工廠 XxxDAOFactory
DAO介面 IXxxxDAO
服務介面 IxxxxService
DAO的資料庫實現 XxxxDAOOracle/XxxxDAOInfomix
業務邏輯 XxxxManager
i)系統
【規則9-1】在我國內不建議隨便使用設計模式等程式碼模式,因為並不流行。
【規則9-2】系統輸入、資源操作(如記憶體分配、檔案及目錄操作)、網路操作(如通訊、呼叫等)、任務間的操作(如通訊、呼叫等)時必須進行錯誤、超時、或則異常處理。
【規則9-3】模組的編寫應有完善的測試方面的考慮。
附表
表1 各種型別命名規範總結
型別 | 命名規則 | 注意事項 | 例項 |
類或結構 | Pascal | 首字元大寫 | HttpContext |
介面 | Pascal | 加字首I | IDataAdaper |
列舉名 | Pascal | 首字元大寫 | CommandType |
列舉值 | Pascal | 首字元大寫 | CommandType.Text |
事件 | Pascal | 首字元大寫 | SelectedIndexChanged |
自定義異常 | Pascal | 加字尾Exception | ArgumentException |
類公共欄位 | Pascal | 首字元大寫 | MaxValue(或_MaxValue) |
方法 | Pascal | 首字元大寫 | ToString() |
名稱空間 | Pascal | 首字元大寫 | System.Xml |
屬性 | Pascal | 首字元大寫 | BackColor |
保護或私有欄位 | Camel | 首字元小寫 | myVariable |
引數 | Camel | 首字元小寫 | cmdText |
表2 資料型別縮寫規則
資料型別 | 資料型別縮寫 | 標準命名例項 |
Bool | b/is | IsVisable |
Float | F | FPrice |
Double | D | DPrice |
Unit | U | UAge |
Int | I | INumber |
Char | Ch | ChCode |
Byte | Bt | BtImages |
String | Str | StrName |
Struct | St | StStudent |
Window | Wnd | WndMain |
ArrayList | Lst | LstStudents |
Array | Arr | ArrStudents |
Hashtable | Ht | Htstudents |
表3 Windows控制元件縮寫規則
控制元件型別 | 控制元件名稱 | 控制元件型別縮寫 | 例項 |
Label | 標籤框 | Lbl | LblMessage |
LinkLabel | 超連結標籤框 | Llbl | LlblToday |
Button | 按鈕 | Btn | BtnSave |
TextBox | 文字框 | Txt | TxtName |
MainMenu | 選單欄 | Mmnu | MmnuFile |
CheckBox | 多選框 | Chk | ChkStock |
RadioButton | 單選框 | Rbtn | RbtnSelected |
GroupBox | 組合框 | Gbx | GbxMain |
PictureBox | 圖片框 | Pic | PicImage |
Panel |
| Pnl | PnlBody |
DataGrid |
| Dgrd | DgrdView |
ListBox |
| Lst | LstProducts |
CheckedListBox |
| Clst | ClstChecked |
ComboBox | 組合框 | Cbo | CboMenu |
ListView | 列表檢視 | Lvw | LvwBrowser |
TreeView | 樹檢視 | Tvw | TvwType |
TabControl |
| Tctl | TctlSelected |
DateTimePicker |
| Dtp | DtpStartDate |
HscrollBar |
| Hsb | HsbImage |
VscrollBar |
| Vsb | VsbImage |
Timer |
| Tmr | TmrCount |
ImageList |
| Ilst | IlstImage |
ToolBar | 工具欄 | Tlb | TlbManage |
StatusBar | 狀態列 | Stb | StbFootPrint |
OpenFileDialog |
| Odlg | OdlgFile |
SaveFileDialog |
| Sdlg | SdlgSave |
FoldBrowserDialog |
| Fbdlg | FbdlgBrowser |
FontDialog |
| Fdlg | FdlgFoot |
ColorDialog |
| Cdlg | CdlgColor |
PrintDialog |
| Pdlg | PdlgPrint |
表 4 資料庫物件縮寫規範
資料庫物件 | 名稱 | 簡寫 | 例項 |
Connection |
| Con | ConNorthwind |
Command |
| Cmd | CmdReturnProducts |
Parameter |
| Parm | ParmProductID |
DataAdapter |
| Dap | DapProducts |
DataReader |
| Dtr | DtrProducts |
DataSet |
| Ds | DsNorthwind |
DataTable |
| Dt | DtProduct |
DataRow |
| Drow | DrowRow |
DataColumn |
| Dcol | DcolProductID |
DataRelation |
| Drl | DrlMasterDetail |
DataView |
| Dvw | DvwFilteredProducts |
相關文章
- C#命名規範C#
- 前端開發規範:命名規範、html規範、css規範、js規範前端HTMLCSSJS
- C#程式設計命名規範C#程式設計
- c#控制元件命名規範C#控制元件
- C#控制元件命名規範(字首)C#控制元件
- 阿里Android開發規範:資原始檔命名與使用規範阿里Android
- C#開發編碼規範C#
- PHP 命名規範PHP
- JavaScript 命名規範JavaScript
- PHP命名規範PHP
- CSS命名規範CSS
- SqlServer命名規範SQLServer
- Google命名規範Go
- java命名規範Java
- C#程式碼識別符號命名規範C#符號
- 『前端規範化』CSS命名規範化前端CSS
- Android 程式碼規範 - 命名規範Android
- Android程式碼規範:命名規範Android
- Python命名規範Python
- CSS — BEM 命名規範CSS
- 前端命名基本規範前端
- css 命名規範 BEMCSS
- Android命名規範Android
- 前端專案git操作命名規範和協作開發流程前端Git
- Java中的命名規範。Java
- mysql及php命名規範MySqlPHP
- div+css命名規範CSS
- 開發規範
- 前端開發規範手冊(命名、HTML、CSS、JS、ES6、React)前端HTMLCSSJSReact
- MySQL資料庫規範 (設計規範+開發規範+操作規範)MySql資料庫
- Golang 推薦的命名規範Golang
- css命名和書寫規範CSS
- 我的專案命名規範
- BEM命名規範結合SCSSCSS
- CSS 選擇器命名規範CSS
- 檔案/資源命名規範
- Laravel命名規範速查表Laravel
- 軟體版本命名規範