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