本文主要介紹c#代碼規(guī)范分析工具(c#代碼規(guī)范檢查),下面一起看看c#代碼規(guī)范分析工具(c#代碼規(guī)范檢查)相關(guān)資訊。
1規(guī)范的目的
2適用范圍
3代碼注釋
3.1代碼注釋同意............................................3服務(wù)器。
3.2模塊標(biāo)題注釋規(guī)范......................................3會話
3.3方法注釋規(guī)范.............................................4功能
3.4代碼行注釋規(guī)范..........................................6工具
3.5變量注釋規(guī)范.............................................7編碼
4命名規(guī)則
4.1命名的基本慣例..........................................8設(shè)計
4.2各種類型標(biāo)識符的基本約定.........................9
4.3部件名稱縮寫列表.......................................10
5其他規(guī)格
5.1編程風(fēng)格..................................................11
5.2資源釋放..................................................13
5.3錯誤處理..................................................13
5.4其他.........................................................14
1規(guī)范目的
在一個軟件的生命周期中,80%的成本在于維護;幾乎沒有一個軟件,在其整個生命周期中,是由最初的開發(fā)者維護的。保護;編碼規(guī)范可以提高軟件的可讀性,讓程序員盡快完整地理解新代碼。為了實現(xiàn)規(guī)范,每個軟件開發(fā)人員必須始終如一地遵循編碼規(guī)范;使用統(tǒng)一編碼規(guī)范的主要原因是為了規(guī)范應(yīng)用程序的結(jié)構(gòu)和編碼風(fēng)格,以便于閱讀和理解這種代碼;好的編碼約定可以使源代碼嚴謹、易讀、清晰,與其他語言約定保持一致,并且盡可能直觀。
2適用范圍
該規(guī)范主要使用c#作為開發(fā)語言規(guī)范,是寶良實驗室的原則規(guī)范。因為本規(guī)范是為編寫程序而設(shè)計的,所以適用于所有與程序編寫相關(guān)的工作。對于每一個具體的項目,可能都需要刪減和補充。適用人員:軟件工程專業(yè)的學(xué)生;適用產(chǎn)品:用c#編寫的程序。
3代碼注釋
3.1代碼注釋約定
所有的方法和函數(shù)都應(yīng)該以簡短的注釋開始,描述這段代碼的功能(方法是什么)。這種描述不應(yīng)該包括執(zhí)行過程的細節(jié)(是如何完成的),因為它經(jīng)常會隨著時間而變化,這種描述會使不必要的注釋維護工作,甚至更糟——成為錯誤的注釋。代碼本身和必要的嵌入注釋將描述實現(xiàn)方法。當(dāng)參數(shù)的作用不明顯,流程希望參數(shù)在一個特定的范圍內(nèi)時,傳遞給流程的參數(shù)也應(yīng)該進行描述。由過程改變的函數(shù)返回值和全局變量,尤其是那些引用參數(shù)的,也必須在每個過程的開始描述。3.2模塊標(biāo)題注釋規(guī)范
作為一個單元的物理文件必須有一個模塊頭注釋規(guī)范,例如。c#中的cs文件
每個模塊開頭使用的描述,主要包括:(粗體為必填項,其他為可選項)
文件名:該文件的名稱。功能描述:該模塊的功能描述和一般流程描述。表:對所使用的數(shù)據(jù)表、視圖和存儲過程的描述。如果關(guān)系比較復(fù)雜,應(yīng)該說明哪些是可擦除的,哪些是只讀的。作者:日期:引用(可選):該文件對應(yīng)的分析文檔和設(shè)計文檔。使用(可選):在開發(fā)的系統(tǒng)中引用其他系統(tǒng)的dll和對象時,應(yīng)列出相應(yīng)的來源,是否與系統(tǒng)相關(guān)(不清楚的可以省略),以便于準(zhǔn)備安裝文件。修訂歷史:如果文件的所有者發(fā)生變化,則需要提供修改人的姓名、修改日期和修改原因。分隔符:* * * * * * * * * * * * * * * * * * * * * * * * *(按順序)示例如下:
3.3方法注釋規(guī)范
1 c#為程序員使用包含xml的文檔提供了一種機制。本 的特殊注釋語法記錄了它們的代碼。在源代碼文件中,可以使用一定格式的注釋來指導(dǎo)某個工具根據(jù)這些注釋及其背后的源代碼元素生成xml。在特定的應(yīng)用程序中,類、接口、屬性和方法必須有一個摘要部分,如果方法有參數(shù)和返回值,它們必須有param和returns部分。例子如下:
///summary//…///summary//param name = /param//returns/returns2事件不需要header注釋,但是當(dāng)它涉及復(fù)雜處理(如循環(huán)/數(shù)據(jù)庫操作/復(fù)雜邏輯等)時。),應(yīng)該是分成單個處理函數(shù),事件再調(diào)用函數(shù)。
所有方法都必須在其定義前添加方法注釋。
4方法注釋自動生成///形式的xml標(biāo)記格式的注釋。
在示例圖下方:
5.公共類庫中的公共方法需要在常用方法的注釋后添加作者、日期、修改記錄等信息,統(tǒng)一以xml標(biāo)簽的格式標(biāo)注,標(biāo)簽如下:
作者作者/作者創(chuàng)建日期創(chuàng)建日期/創(chuàng)建日期修訂歷史-修改記錄修改作者/修改日期修改日期修改日期修改原因/修改原因修改日期修改原因修改日期修改日期修改原因修改原因修改日期修改日期修改日期修改日期修改日期修改原因修改日期修改日期修改原因修改日期修改日期修改日期修改日期修改原因修改日期修改原因修改原因修改日期修改原因修改原因修改原因修改原因/修改原因/修訂歷史模式日期最后修改日期6如果一個代碼文件是由一個人編寫的,則該代碼文件中的方法不需要該信息
7要修改任何方法,必須在修改的記錄上添加注釋。
3.4代碼行注釋規(guī)范
1如果某個功能需要多行代碼來實現(xiàn),并且有很多邏輯結(jié)構(gòu)塊,那么在代碼開始之前要對類似的代碼進行注釋,說明該代碼塊的處理思路和注意事項。
2注釋再次增長,在代碼開頭靠左對齊。
3雙對角線和注釋由空格分隔,如下例所示:3.5變量注釋規(guī)范
1定義變量時,需要添加變量注釋,說明變量的用途。
class 2變量應(yīng)該以///的形式自動生成xml標(biāo)記格式的注釋,如下例所示:
方法級變量注釋可以放在變量聲明語句的后面,與連續(xù)變量聲明的注釋左對齊,并通過制表符與代碼分開。
4命名規(guī)則
4.1命名的基本慣例
1使用能準(zhǔn)確描述變量/字段/類的完整英文描述符,如firstname。一些顯而易見的變量可以使用簡單的名字,比如循環(huán)中的增量(減量)變量可以被命名為 我 。
2盡量使用項目所涉及領(lǐng)域的術(shù)語。
3使用大小寫混合,提高名稱的可讀性。要區(qū)分標(biāo)識符中的多個單詞,請將標(biāo)識符中每個單詞的第一個字母大寫。不要使用下劃線來分隔字符。
對于不同類型的標(biāo)識符,有兩種合適的書寫方法:
將標(biāo)識符的第一個單詞大寫;
camelcasing:標(biāo)識符的第一個單詞的字母是小寫的。
4下表描述了不同類型標(biāo)識符的大寫規(guī)則:
5避免使用縮寫。如果你必須使用它們,請小心使用。同時,應(yīng)保留一份標(biāo)準(zhǔn)縮寫列表,并保持一致。
6常用縮寫,兩個字母的縮寫要統(tǒng)一大小寫(例:iostream,get iostream);多字母縮寫大寫,其余小寫(例如:gethtml標(biāo)簽);
7避免使用長名字(最好不超過15個字母)。
8避免使用大小相似或僅不同的名稱。
4.2各種類型標(biāo)識符的命名慣例
1裝配命名
實驗室名稱(lab)項目名稱模塊名稱(可選),例如:
中央服務(wù)器組件:實驗室。服務(wù)器中心;;
中心服務(wù)器的業(yè)務(wù)邏輯組件:實驗室。severcenter . business;
2命名空間命名
與程序集命名相同:實驗室名稱(lab)項目名稱模塊名稱。此外,通常建議名稱空間和目錄結(jié)構(gòu)相同。例如:
中央服務(wù)器:實驗室。服務(wù)器中心;;
中央服務(wù)器下的用戶控制:實驗室。用戶控制;;
中心服務(wù)器的業(yè)務(wù)邏輯:實驗室。severcenter . business;中央服務(wù)器數(shù)據(jù)訪問:實驗室。server center . data;;
3程序集和dll
在大多數(shù)情況下,一個程序集包含所有或一些可重用的庫,并且它包含在單個動態(tài)鏈接庫(dll)中。
一個程序集可以被拆分成多個dll,但這種情況很少見,在此準(zhǔn)則中沒有解釋。
l程序集和dll是庫的物理組織,而命名空間是邏輯組織,它們的組成應(yīng)該獨立于程序集的組織。
l命名空間可以并且經(jīng)??缭蕉鄠€程序集??梢钥紤]使用以下模式來命名dll:
公司。component.dll
例如:lab.severcenter.dll。
4類和接口命名
l類名要用名詞;
l避免使用單詞的縮寫,除非它們的縮寫廣為人知,比如http。
l接口的名稱應(yīng)該以字母i開頭,確保接口的標(biāo)準(zhǔn)實現(xiàn)名稱只有 我 前綴,比如icomponent接口的標(biāo)準(zhǔn)實現(xiàn)是component;
l命名泛型類型參數(shù):命名以t開頭或以t開頭的描述性名稱,例如:
公共類別列表
公共類myclasstsession
避免在同一個項目的不同命名空間中重復(fù)命名類。引用時避免和混淆;
5方法命名
第一個詞通常是動詞;
l如果方法返回成員變量的值,方法名通常是get成員變量的名稱;如果返回值是bool變量,通常會以is為前綴。另外,如果有必要,可以考慮用屬性代替方法;
l如果一個方法修改了成員變量的值,方法名通常是:set member variable name。如上所述,考慮使用屬性而不是方法。
6變量命名
l根據(jù)使用范圍,我們的代碼中基本上有以下幾種類型的變量:類的公共變量;類的私有變量(受保護的和公共的);方法的參數(shù)變量;方法內(nèi)部使用的局部變量。這些變量的命名規(guī)則基本相同。請參見標(biāo)識符大小寫對照表。區(qū)別如下:
a)類的公共變量的命名比較通用,沒有特殊要求;
b)一個類的私有變量有兩種用法:前綴 m ,如mworkername
c)該方法的參數(shù)變量采用camalstring,如workername;
l方法內(nèi)部的局部變量采用camalstring,比如workername。
l don 不要用_或作為第一個字母;
我試著用簡短而有意義的詞。;
l單字符變量名通常只用于壽命很短的變量:i,j,k,m,n通常用于整數(shù);;c、d、e通常用于字符;;s代表字符串
l如果變量是一個集合,變量名應(yīng)該是復(fù)數(shù)。例如,表中的行數(shù)應(yīng)該命名為:rowscount;
l應(yīng)采用匈牙利命名法來命名組件,所有前綴應(yīng)遵循相同的組件名稱縮寫列表。
4.3部件名稱縮寫列表
縮寫的基本原則是取組件類名每個單詞的首字母。如果只有一個單詞,去掉元音,留下輔音??s寫都是小寫。
5其他規(guī)格
5.1編程風(fēng)格
1變量聲明:
為了保持更好的閱讀習(xí)慣,請不要 不要在一行中寫多個變量聲明,即一行中只聲明一個變量。
-例如:字符串strtest1,strtest2-應(yīng)該寫成:string strtest1字符串strtest22代碼縮進:
l一致的代碼縮進樣式有利于代碼結(jié)構(gòu)層次的表達,使代碼更易于閱讀和流通;
l代碼縮進是用tab鍵實現(xiàn)的,最好不要用空格。為了保證代碼縮進在不同機器上一致,特此規(guī)定c#的tab鍵寬度為4個字符,并設(shè)置如下界面(工具-選項):
l避免方法中參數(shù)多于5個的情況,通常2或3個參數(shù)為宜。如果超過,則應(yīng)使用struct傳遞多個參數(shù)。
為了便于閱讀,請不要 不要讓線條太長,最好的寬度是屏幕寬度(可視寬度根據(jù)顯示器分辨率不同而不同)。請不要超過您正在使用的屏幕寬度。(唐 每行不要超過80個字符。)
不應(yīng)在程序中使用l goto語句。
我總是希望default子句在switch語句中顯示信息。
當(dāng)l方法參數(shù)大于8時,通過結(jié)構(gòu)或類傳遞。
l運算符/運算符左右各有一個半角空格。
l將所有塊的{}號分別放在一行,以嵌套的對齊。不要把它們放在同一行上。
3空白:
l空白行分隔邏輯上相關(guān)的代碼段,以提高可讀性。
l在下列情況下,您應(yīng)該始終使用兩個空行:
a)源文件兩個部分之間。
b)在類聲明和接口聲明之間。
l在下列情況下,您應(yīng)該始終使用空行:
a)介于兩種方法之間。
b)方法中的局部變量和方法的第一條語句之間。
c)塊注釋(參見 5.1.1和)或單行注釋(參見 5.1.2和)與之前。
d)在方法中的兩個邏輯段之間,以提高可讀性。
在下列情況下,應(yīng)始終使用空格:
a)在參數(shù)列表中,空格應(yīng)位于逗號之后,例如:
void updatedata(int a,int b)
b)所有二元運算符,除了 。 ,應(yīng)該用空格與操作數(shù)隔開。一元運算符和操作數(shù)之間不應(yīng)有空格,如:減號( - ),自增( )和自減( - ).例如:
a = c d;
d;
c)for語句中的表達式應(yīng)該用空格分隔,例如:
for(expr 1;expr2表達式3)
d)強制轉(zhuǎn)換后,后面應(yīng)該跟一個空格,例如:
char c;
int a = 1;
c =(char)a;
5.2資源釋放
必須明確釋放所有外部資源。例如:數(shù)據(jù)庫鏈接對象、io對象等。
5.3錯誤處理
1唐 t 捕捉異常但什么也不做。如果你隱藏了一個異常,你將永遠不知道它是否發(fā)生過。
當(dāng)異常發(fā)生時,給用戶一個友好的消息,但要準(zhǔn)確記錄所有可能的錯誤細節(jié),包括發(fā)生時間、相關(guān)方法、類名等。
只捕捉特定的異常,不捕捉普通的異常。
正確的做法:
錯誤的做法:
5.4其他
1一個方法只完成一個任務(wù)。唐 不要將多個任務(wù)合并到一個方法中,即使這些任務(wù)很小。
2使用c#的唯一類型,而不是系統(tǒng)命名空間中定義的別名類型。
唐 不要在程序中使用固定值,而要使用常量。
4避免使用許多成員變量。聲明一個局部變量,并將其傳遞給方法。不要在方法之間共享成員變量。如果一個成員變量由幾個方法共享,就很難知道哪個方法在什么時候修改了它的值。
5唐 不要將成員變量聲明為公共的或受保護的。被聲明為私有,并使用public/protected的屬性。
6不要在代碼中使用特定的路徑和驅(qū)動器號。使用相對路徑,并使它們可編程。
做一些 自我檢查和當(dāng)應(yīng)用程序啟動時,確保所需的文件和附件都在指定的位置。如有必要,檢查數(shù)據(jù)庫鏈接。如果有任何問題,給用戶一個友好的提示。
如果找不到所需的配置文件,應(yīng)用程序需要能夠使用默認值創(chuàng)建一個副本。
如果在配置文件中找到它。錯誤值,應(yīng)用程序應(yīng)該拋出一個錯誤并給出一條提示消息,告訴用戶正確的值。
10 datacolumn在提取其列時應(yīng)使用字段名而不是索引號。示例:正確的datacolumn[&; name &;] ]是較差的datacolumn[0]
在一個類中,所有的字段定義都放在類的頭、所有方法或?qū)傩缘那懊妗?br>12在一個類中,所有的屬性都定義在一個屬性塊中:
標(biāo)簽:
變量注釋
了解更多c#代碼規(guī)范分析工具(c#代碼規(guī)范檢查)相關(guān)內(nèi)容請關(guān)注本站點。