C#開發命名規範

兵工廠三劍客發表於2018-07-11

轉載自: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:注意這裡的介面修飾符只能用publicinternal

   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】不允許變數名、類名、屬性名、 方法名等與系統識別符號重名。(系統識別符號見附表)

gSQL編碼規範

   【規則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


相關文章