亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

c#編碼規范(轉載)

2019-11-14 14:00:29
字體:
來源:轉載
供稿:網友

原文:http://www.49028c.com/wulinfeng/archive/2012/08/31/2664720.html

 

規范目的 ……………………………………………………… 3

適用范圍 ……………………………………………………… 3

代碼注釋 ……………………………………………………… 3

3.1    代碼注釋約定............................................ 3

3.2    模塊頭部注釋規范...................................... 3

3.3    方法注釋規范............................................. 4

3.4    代碼行注釋規范.......................................... 6

3.5    變量注釋規范............................................. 7

命名規則 ……………………………………………………… 8

4.1    命名的基本約定.......................................... 8

4.2    各種標示符類型的基本約定......................... 9

4.3    組件名稱縮寫列表....................................... 10

其它規范 ……………………………………………………… 11

5.1    編程風格.................................................. 11

5.2    資源釋放.................................................. 13

5.3    錯誤處理.................................................. 13

5.4    其它......................................................... 14

1     規范目的

  1. 一個軟件的生命周期中,80%的花費在于維護;
  2. 幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開發人員來維護;
  3. 編碼規范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼。為了執行規范,每個軟件開發人員必須一致遵守編碼規范;
  4. 使用統一編碼規范的主要原因,是使應用程序的結構和編碼風格標準化,以便于閱讀和理解這段代碼;
  5. 好的編碼約定可使源代碼嚴謹、可讀性強且意義清楚,與其它語言約定相一致,并且盡可能的直觀。

2     適用范圍

  1. 本規范主要以C#為開發語言的規范,為鮑亮實驗室的原則性規范;
  2. 由于本規范是為撰寫程序而設計,所以適用于一切有關程序撰寫的工作事項。對于具體的每個項目,可能需要對之進行裁剪和補存。
  3. 適用人員:軟件工程專業的學生;
  4. 適用產品:以C#編寫的程序。

3     代碼注釋

3.1    代碼注釋約定

  1. 所有的方法和函數都應該以描述這段代碼的功能的一段簡明注釋開始(方法是干什么)。這種描述不應該包括執行過程細節(它是怎么做的),因為這常常是隨時間而變的,而且這種描述會導致不必要的注釋維護工作,甚至更糟—成為錯誤的注釋。代碼本身和必要的嵌入注釋將描述實現方法。
  2. 當參數的功能不明顯且當過程希望參數在一個特定的范圍內時,也應描述傳遞給過程的參數。被過程改變的函數返回值和全局變量,特別是通過引用參數的那些,也必須在每個過程的起始處描述它們。

3.2     模塊頭部注釋規范

以一個物理文件為單元的都需要有模塊頭部注釋規范,例如:C#中的.cs文件

用于每個模塊開頭的說明,主要包括:(粗體字為必需部分,其余為可選部分)

  1. 文件名稱(File Name): 此文件的名稱
  2. 功能描述(Description):   此模塊的功能描述與大概流程說明
  3. 數據表(Tables):             所用到的數據表,視圖,存儲過程的說明,如關系比較復雜,則應說明哪些是可擦寫的,哪些表為只讀的。
  4. 作者(Author)
  5. 日期(Create Date)
  6. 參考文檔(Reference)(可選):          該檔所對應的分析文檔,設計文檔。
  7. 引用(Using) (可選)﹕           開發的系統中引用其它系統的Dll、對象時,要列出其對應的出處,是否與系統有關﹙不清楚的可以不寫﹚,以方便制作安裝檔。
  8. 修改記錄(Revision History):若檔案的所有者改變,則需要有修改人員的名字、修改日期及修改理由。
  9. 分割符:*************************** (前后都要)

示例如下:

3.3     方法注釋規范

1>  C# 提供一種機制,使程序員可以使用含有xml 文本的特殊注釋語法為他們的代碼編寫文檔。在源代碼文件中,具有某種格式的注釋可用于指導某個工具根      據這些注釋和它們后面的源代碼元素生成XML。具體應用當中,類、接口、屬性、方法必須有<Summary>節,另外方法如果有參數及返回值,則必須有   <Param>及<Returns>節。示例如下:

/// <summary>

/// …

/// </summary>

/// <param name=””></param>

/// <returns></returns>

2>  事件不需要頭注解,但包含復雜處理時(如:循環/數據庫操作/復雜邏輯等),應分割成單一處理函數,事件再調用函數。

3>  所有的方法必須在其定義前增加方法注釋。

4>  方法注釋采用 /// 形式自動產生XML標簽格式的注釋。

標記

說明

備注

<c>

提供了一種將說明中的文本標記為代碼的方法

<code>

提供了一種將多行指示為代碼的方法

<example>

可以指定使用方法或其他庫成員的示例。一般情況下,這將涉及到 <code> 標記的使用。

<exception>

對可從當前編譯環境中獲取的異常的引用。

<include>

得以引用描述源代碼中類型和成員的另一文件中的注釋。

<list>

用于定義表或定義列表中的標題行。

<para>

用于諸如<summary>、<remarks> 或 <returns> 等標記內,使您得以將結構添加到文本中。

<param>

應當用于方法聲明的注釋中,以描述方法的一個參數。

<paramref>

提供了一種指示詞為參數的方法。

<permission>

得以將成員的訪問記入文檔。

<remarks>

用于添加有關某個類型的信息,從而補充由 <summary> 所指定的信息。

<returns>

應當用于方法聲明的注釋,以描述返回值。

<see>

得以從文本內指定鏈接。

<seealso>

對可以通過當前編譯環境進行調用的成員或字段的引用。

<summary>

應當用于描述類型或類型成員。

<value>

得以描述屬性。

示例圖如下:

5>  在公用類庫中的公用方法需要在一般方法的注釋后添加作者、日期及修改記錄信息,統一采用XML標簽的格式加注,標簽如下:

<Author></Author> 作者

<CreateDate></CreateDate> 建立日期

<RevisionHistory> 修改記錄

<ModifyBy></ModifyBy>    修改作者

<ModifyDate></ModifyDate>   修改日期

<ModifyReason></ModifyReason>   修改理由

<ModifyBy></ModifyBy>    修改作者

<ModifyDate></ModifyDate>   修改日期

<ModifyReason></ModifyReason>   修改理由

<ModifyBy></ModifyBy>    修改作者

<ModifyDate></ModifyDate>   修改日期

<ModifyReason></ModifyReason>   修改理由

</RevisionHistory>

<LastModifyDate></LastModifyDate> 最后修改日期

6>  一個代碼文件如果是由一人編寫,則此代碼文件中的方法無需作者信息,非代碼文件作者在此文件中添加方法時必須要添加作者、日期等注釋。

7>  修改任何方法,必須要添加修改記錄的注釋。

3.4     代碼行注釋規范

1>  如果處理某一個功能需要很多行代碼實現,并且有很多邏輯結構塊,類似此種代碼應該在代碼開始前添加注釋,說明此塊代碼的處理思路及注意事項等

2>  注釋從新行增加,與代碼開始處左對齊

3>  雙斜線與注釋之間以空格分開,示例圖如下所示:

3.5     變量注釋規范

1>  定義變量時需添加變量注釋,用以說明變量的用途。

2>  Class級變量應以采用 /// 形式自動產生XML標簽格式的注釋,示例圖如下所示:                                                                                               

3>  方法級的變量注釋可以放在變量聲明語句的后面,與前后行變量聲明的注釋左對齊,注釋與代碼間以Tab隔開。

4    命名規則

4.1     命名的基本約定

1>  要使用可以準確說明變量/字段/類的完整的英文描述符,如firstName。對一些作用顯而易見的變量可以采用簡單的命名,如在循環里的遞增(減)變量就可以  被命名為 “i”。

2>  要盡量采用項目所涉及領域的術語。

3>  要采用大小寫混合,提高名字的可讀性。為區分一個標識符中的多個單詞,把標識符中的每個單詞的首字母大寫。不采用下劃線作分隔字符的寫法。

有兩種適合的書寫方法,適應于不同類型的標識符:

PasalCasing標識符的第一個單詞的字母大寫;

camelCasing標識符的第一個單詞的字母小寫。

4>  下表描述了不同類型標識符的大小寫規則:

標識符

大小寫

示例

命名空間

Pascal

namespace Com.Techstar.PRoductionCenter

類型

Pascal

public class DevsList

接口

Pascal

public interface ITableModel

方法

Pascal

public void UpdateData()

屬性

Pascal

Public int Length{…}

事件

Pascal

public event EventHandler Changed;

私有字段

Camel

private string fieldName;

非私有字段

Pascal

public string FieldName;

枚舉值

Pascal

FileMode{Append}

參數

Camel

public void UpdateData(string fieldName)

局部變量

Camel

string fieldName;

5>  避免使用縮寫,如果一定要使用,就謹慎使用。同時,應該保留一個標準縮寫的列表,并且在使用時保持一致。

6>  對常見縮略詞,兩個字母的縮寫要采用統一大小寫的方式(示例:ioStream,   getIOStream);多字母縮寫采用首字母大寫,其他字母小寫的方式(示例:  getHtmlTag);

7>  避免使用長名字(最好不超過 15 個字母)。

8>  避免使用相似或者僅在大小寫上有區別的名字。

4.2     各種標示符類型的命名約定

1>  程序集命名

實驗室名稱(Lab)+ 項目名稱 + 模塊名稱(可選),例如:

中心服務器程序集:Lab.SeverCenter;

中心服務器業務邏輯程序集:Lab.SeverCenter.Business;

2>  命名空間命名

采用和程序集命名相同的方式:實驗室名稱(Lab)+ 項目名稱 + 模塊名稱。 另外,一般情況下建議命名空間和目錄結構相同。例如:

中心服務器:Lab.SeverCenter;

中心服務器下的用戶控件:Lab.SeverCenter.UserControl;

中心服務器業務邏輯:Lab.SeverCenter.Business;

中心服務器數據訪問:Lab.SeverCenter.Data;

3>  程序集和DLL

l  大多數情況下,程序集包含全部或部分可重用庫,且它包含在單個動態鏈接庫(DLL) 中。

l  一個程序集可拆分到多個DLL 中,但這非常少見,在此準則中也沒有說明。

l  程序集和DLL 是庫的物理組織,而命名空間是邏輯組織,其構成應與程序集的組織無關。

l  命名空間可以且經常跨越多個程序集。可以考慮如下模式命名DLL:

         <Company>.<Component>.dll

        例:Lab.SeverCenter.dll

4> 類和接口命名

l  類的名字要用名詞;

l  避免使用單詞的縮寫,除非它的縮寫已經廣為人知,如HTTP。

l  接口的名字要以字母I開頭。保證對接口的標準實現名字只相差一個“I”前綴,例如對IComponent接口的標準實現為Component;

l  泛型類型參數的命名:命名要為T或者以T開頭的描述性名字,例如:

public class List<T>

public class MyClass<Tsession>

l  對同一項目的不同命名空間中的類,命名避免重復。避免引用時的沖突和混淆;

5> 方法命名

l  第一個單詞一般是動詞;

l  如果方法返回一個成員變量的值,方法名一般為Get+成員變量名,如若返回的值 是bool變量,一般以Is作為前綴。另外,如果必要,考慮用屬性來替代方法;

l  如果方法修改一個成員變量的值,方法名一般為:Set + 成員變量名。同上,考慮 用屬性來替代方法。

6> 變量命名

l  按照使用范圍來分,我們代碼中的變量的基本上有以下幾種類型,類的公有變量;類的私有變量(受保護同公有);方法的參數變量;方法內部使用的局部變量。 這些變量的命名規則基本相同,見標識符大小寫對照表。區別如下:

a)   類的公有變量按通常的方式命名,無特殊要求;

b)   類的私有變量采用兩種方式均可:采用加“m”前綴,例如mWorkerName;

c)   方法的參數變量采用camalString,例如workerName;

l  方法內部的局部變量采用camalString,例如workerName。

l  不要用_或&作為第一個字母;

l  盡量要使用短而且具有意義的單詞;

l  單字符的變量名一般只用于生命期非常短暫的變量:i,j,k,m,n一般用于integer;c,d,e 一般用于characters;s用于string

l  如果變量是集合,則變量名要用復數。例如表格的行數,命名應為:RowsCount;

l  命名組件要采用匈牙利命名法,所有前綴均應遵循同一個組件名稱縮寫列表

4.3  組件名稱縮寫列表

縮寫的基本原則是取組件類名各單詞的第一個字母,如果只有一個單詞,則去掉其中的元音,留下輔音。縮寫全部為小寫。

組件類型

縮寫

例子

Label

Lbl

lblNote

TextBox

Txt

txtName

Button

Btn

btnOK

ImageButton

Ib

ibOK

LinkButton

Lb

lbJump

HyperLink

Hl

hlJump

DropDownList

Ddl

ddlList

CheckBox

Cb

cbChoice

CheckBoxList

Cbl

cblGroup

RadioButton

Rb

rbChoice

RadioButtonList

Rbl

rblGroup

Image

Img

imgBeauty

Panel

Pnl

pnlTree

TreeView

Tv

tvUnit

WebComTable

Wct

wctBasic

ImageDateTimeInput

Dti

dtiStart

ComboBox

Cb

cbList

MyImageButton

Mib

mibOK

WebComm.TreeView

Tv

tvUnit

PageBar

Pb

pbMaster

5    其它規范

5.1      編程風格

1>  變量聲明:

為了保持更好的閱讀習慣,請不要把多個變量聲明寫在一行中,即一行只聲明一個變量。

例如:

String strTest1, strTest2;

應寫成:

String strTest1;

String strTest2;

2>   代碼縮進:

l  一致的代碼縮進風格,有利于代碼的結構層次的表達,使代碼更容易閱讀和傳閱;

l  代碼縮進使用Tab鍵實現,最好不要使用空格,為保證在不同機器上使代碼縮進保持一致,特此規定C#的Tab鍵寬度為4個字符,設定界面如下(工具–選項):

l  避免方法中有超過5個參數的情況,一般以2,3個為宜。如果超過了,則應使用struct來傳遞多個參數。

l  為了更容易閱讀,代碼行請不要太長,最好的寬度是屏幕寬度(根據不同的顯示分辯率其可見寬度也不同)。請不要超過您正在使用的屏幕寬度。(每行代碼不要 超過80個字符。)

l  程序中不應使用goto語句。

l  在switch語句中總是要default子句來顯示信息。

l  方法參數多于8個時采用結構體或類方式傳遞

l  操作符/運算符左右空一個半角空格

l  所有塊的{}號分別放置一行,并嵌套對齊,不要放在同一行上

3>    空白:

l  空行將邏輯相關的代碼段分隔開,以提高可讀性。

l  下列情況應該總是使用兩個空行:

a)  一個源文件的兩個片段(section)之間。

b)  類聲明和接口聲明之間。

l  下列情況應該總是使用一個空行:

a)  兩個方法之間。

b)  方法內的局部變量和方法的第一條語句之間。

c)  塊注釋(參見"5.1.1")或單行注釋(參見"5.1.2")之前。

d)  一個方法內的兩個邏輯段之間,用以提高可讀性。

l  下列情況應該總是使用空格:

a)  空白應該位于參數列表中逗號的后面,如:

void UpdateData(int a, int b)

b)  所有的二元運算符,除了".",應該使用空格將之與操作數分開。一元操作符和操作數之間不因該加空格,比如:負號("-")、自增("++")和自減("--")。例  如:

a += c + d;

d++;

c)  for 語句中的表達式應該被空格分開,例如:

for (expr1; expr2; expr3)

d)  強制轉型后應該跟一個空格,例如:

char c;

int a = 1;

c = (char) a;

5.2     資源釋放

所有外部資源都必須顯式釋放。例如:數據庫連接對象、IO對象等。

5.3     錯誤處理

1>  不要“捕捉了異常卻什么也不做“。如果隱藏了一個異常,你將永遠不知道異常到底發生了沒有。

2>  發生異常時,給出友好的消息給用戶,但要精確記錄錯誤的所有可能細節,包括發生的時間,和相關方法,類名等。

3>  只捕捉特定的異常,而不是一般的異常。

正確做法:

錯誤做法:

5.4     其它

1>  一個方法只完成一個任務。不要把多個任務組合到一個方法中,即使那些任務非常小。

2>  使用C#的特有類型,而不是System命名空間中定義的別名類型。

3>  別在程序中使用固定數值,用常量代替。

4>  避免使用很多成員變量。聲明局部變量,并傳遞給方法。不要在方法間共享成員變量。如果在幾個方法間共享一個成員變量,那就很難知道是哪個方法在什么   時候修改了它的值。

5>  別把成員變量聲明為 public 或 protected。都聲明為 private 而使用 public/protected 的屬性

6>  不在代碼中使用具體的路徑和驅動器名。 使用相對路徑,并使路徑可編程。

7>  應用程序啟動時作些“自檢”并確保所需文件和附件在指定的位置。必要時檢查數據庫連接。出現任何問題給用戶一個友好的提示。

8>  如果需要的配置文件找不到,應用程序需能自己創建使用默認值的一份。

9>  如果在配置文件中發現錯誤值,應用程序要拋出錯誤,給出提示消息告訴用戶正確值。

10>  DataColumn取其列時要用字段名,不要用索引號。
例: 正確DataColumn[“Name”]
     不好 DataColumn[0]

11>  在一個類中,字段定義全部統一放在class的頭部、所有方法或屬性的前面。

12>  在一個類中,所有的屬性全部定義在一個屬性塊中:

Version:1.0.0

Date:2012.8.30


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大片欧美激情性色a∨久久| 亚洲福利视频久久| 91精品国产综合久久久久久蜜臀| 精品国内自产拍在线观看| 欧美日韩中文字幕在线视频| 夜夜嗨av一区二区三区免费区| 久久艹在线视频| 国产精品一二三在线| 国内揄拍国内精品少妇国语| 国产日韩在线亚洲字幕中文| 日韩精品中文字幕在线观看| 欧美一区二区三区图| 国产日韩欧美成人| 亚洲视频一区二区三区| 亚洲国产精品va在看黑人| 色偷偷888欧美精品久久久| 久久精品电影网| 久久久欧美一区二区| 1769国内精品视频在线播放| 欧美丝袜一区二区三区| 欧美三级欧美成人高清www| 亚洲第一在线视频| 亚洲国产精品中文| 韩国19禁主播vip福利视频| 精品女同一区二区三区在线播放| 亚洲精品中文字幕有码专区| 欧美精品成人在线| 亚洲第一精品自拍| 亚洲999一在线观看www| 国产精品91免费在线| 在线视频一区二区| 91精品国产综合久久香蕉最新版| 97不卡在线视频| 精品久久久久久久大神国产| 黑人欧美xxxx| 亚洲精品国精品久久99热一| 国产主播欧美精品| 成人黄色中文字幕| 国模精品视频一区二区三区| 日韩中文字幕精品视频| 在线国产精品视频| 久久久久久久香蕉网| 成人综合国产精品| 亚洲成色999久久网站| 777精品视频| 国产精品96久久久久久| 成人中文字幕+乱码+中文字幕| 亚洲图片制服诱惑| 亚洲国产成人av在线| 日韩欧美精品中文字幕| 一本色道久久综合亚洲精品小说| 欧美精品在线观看| 国产精品美女免费视频| 三级精品视频久久久久| 欧美日韩激情网| 孩xxxx性bbbb欧美| 久久久精品国产| 91精品国产成人www| 国产精品久久网| www.亚洲人.com| 国产亚洲人成网站在线观看| 欧美极品xxxx| 91精品国产综合久久香蕉最新版| 亚洲护士老师的毛茸茸最新章节| 日韩一中文字幕| 国产精品jvid在线观看蜜臀| 69视频在线播放| 精品久久久久久久久久ntr影视| 国产精品福利网站| 亚洲va欧美va国产综合久久| 亚洲欧美中文字幕在线一区| 亚洲乱码国产乱码精品精| 高清欧美电影在线| www.日韩av.com| 久久婷婷国产麻豆91天堂| 日韩亚洲成人av在线| 97精品一区二区三区| 一区二区三区 在线观看视| 最近中文字幕2019免费| 欧美韩国理论所午夜片917电影| 大荫蒂欧美视频另类xxxx| 久久久久久久久国产| 26uuu日韩精品一区二区| 亚洲国产精品电影在线观看| 精品国内自产拍在线观看| 成人一区二区电影| 日韩视频欧美视频| 欧美福利小视频| 亚洲欧美国产精品久久久久久久| 久久久久亚洲精品国产| 亚洲精品动漫久久久久| 亚洲娇小xxxx欧美娇小| 日韩精品中文字幕视频在线| 亚洲最大成人网色| 欧美精品情趣视频| 色噜噜亚洲精品中文字幕| 亚洲精品xxx| 亚洲美女av在线| 最好看的2019的中文字幕视频| 亚洲国产欧美在线成人app| 国产999精品久久久影片官网| 一区二区欧美激情| 91精品视频观看| 久久免费精品视频| 欧美日韩精品在线| 久久亚洲精品国产亚洲老地址| 成人在线视频福利| 九九热r在线视频精品| 欧美www视频在线观看| 国产一区二区三区四区福利| 亚洲精品白浆高清久久久久久| 日韩精品在线视频| 成人黄色av播放免费| 日韩在线观看精品| 国产精品电影久久久久电影网| 亚洲欧美激情在线视频| 日韩视频在线一区| 久久久久久尹人网香蕉| 久久精视频免费在线久久完整在线看| 在线午夜精品自拍| 国产精品久久99久久| 日韩av在线网址| 亚洲精品国偷自产在线99热| 国产精品日韩欧美综合| 亚洲免费高清视频| 国产成人精品视频| 日韩在线观看你懂的| 日韩第一页在线| 亚洲电影av在线| 国产精品pans私拍| 亚洲欧美日韩高清| 韩国精品久久久999| 欧美在线视频观看| 亚洲女同性videos| 日韩欧美在线视频观看| 精品国产一区二区三区四区在线观看| 亚洲男人天堂2024| 亚洲xxxx做受欧美| 亚洲第一男人天堂| 亚洲女人天堂视频| 成人网页在线免费观看| 久久久久久久久久国产| 国产精品视频免费在线| www亚洲精品| 欧美激情啊啊啊| 在线播放国产一区中文字幕剧情欧美| 日韩电影免费观看中文字幕| 国产精品三级久久久久久电影| 日韩中文在线不卡| 亚洲第一免费播放区| 国产一区二区三区三区在线观看| 欧美日韩亚洲视频一区| 久久人91精品久久久久久不卡| 国产成人精品在线视频| 国产精品国语对白| 国产精品美女www爽爽爽视频| 亚洲色图35p| 亚洲乱码一区av黑人高潮| 欧美精品videossex性护士| 国产精品国产三级国产专播精品人| 最近2019好看的中文字幕免费| 上原亚衣av一区二区三区| 国产原创欧美精品| 日韩在线观看免费av|