.Net 項(xiàng)目代碼風(fēng)格要求小結(jié)
PDF版下載:項(xiàng)目代碼風(fēng)格要求V1.0.pdf
代碼風(fēng)格沒(méi)有正確與否,重要的是整齊劃一,這是我擬的一份《.Net 項(xiàng)目代碼風(fēng)格要求》,供大家參考。
1. C# 代碼風(fēng)格要求1.1注釋
類(lèi)型、屬性、事件、方法、方法參數(shù),根據(jù)需要添加注釋。
如果類(lèi)型、屬性、事件、方法、方法參數(shù)的名稱(chēng)已經(jīng)是自解釋了,不需要加注釋?zhuān)环駝t需要添加注釋。
當(dāng)添加注釋時(shí),添加方式如下圖所示:

1.2 類(lèi)型(類(lèi)、結(jié)構(gòu)、委托、接口)、字段、屬性、方法、事件的命名
優(yōu)先考慮英文,如果英文沒(méi)有合適的單詞描述,可以使用拼音,使用中文是不符合要求的。
唯一可以使用中文的地方是枚舉的枚舉項(xiàng),枚舉項(xiàng)實(shí)際已經(jīng)不屬于本節(jié)標(biāo)題的范疇了。這里只是放到一起說(shuō)明,如下圖所示:

1.3 不使用縮寫(xiě)
所有類(lèi)型、方法、參數(shù)、變量的命名不得使用縮寫(xiě),包括大家熟知的縮寫(xiě),例如msg。
1.4 代碼使用半展開(kāi)
第一步,打開(kāi)Visual Studio,進(jìn)入“工具”,“選項(xiàng)...”,如下圖所示:

第二步,進(jìn)入“文本編輯器”,“C#”,“格式設(shè)置”,“新行”,取消掉右側(cè)所有復(fù)選框中的對(duì)號(hào),如下圖所示:

第三步,點(diǎn)擊“確定”,完成設(shè)置。
1.5 使用Tab作為縮進(jìn),并設(shè)置縮進(jìn)大小為4
第一步,打開(kāi)Visual Studio,進(jìn)入“工具”,“選項(xiàng)...”,如下圖所示:

第二步,進(jìn)入“文本編輯器”,“C#”,“制表符”,如下圖所示,設(shè)置制表符。

第三步,點(diǎn)擊“確定”,完成設(shè)置。
1.6 一個(gè).cs源文件至多定義兩個(gè)類(lèi)型
如果兩個(gè)類(lèi)型的關(guān)系是緊密相關(guān)的,比如 產(chǎn)品、產(chǎn)品類(lèi)型,此時(shí)Product類(lèi),和ProductType枚舉可以定義在同一個(gè)Product.cs文件中。
但不能在一個(gè).cs文件中出現(xiàn)兩個(gè)不相關(guān)的類(lèi)型定義,例如將 Product類(lèi)和Reseller類(lèi)(分銷(xiāo)商)定義在一個(gè)BasicInfo.cs文件中。
1.7 類(lèi)型名稱(chēng)和源文件名稱(chēng)必須一致
當(dāng)類(lèi)型命名為Product時(shí),其源文件命名只能是Product.cs。
1.8 所有命名空間、類(lèi)型名稱(chēng)使用Pascal風(fēng)格(單詞首字母大寫(xiě))
如下圖所示,紅色標(biāo)記的為使用Pascal風(fēng)格的類(lèi)型:

注意ProductType是私有類(lèi)型,不管類(lèi)型是公有的還是私有的,其命名總是采用Pascal風(fēng)格。
1.9 本地變量、方法參數(shù)名稱(chēng)使用Camel風(fēng)格(首字母小寫(xiě),其后每個(gè)單詞的首字母大寫(xiě))
紅色標(biāo)記的為使用Camel風(fēng)格的變量或者方法參數(shù):

1.10 私有方法、受保護(hù)方法,仍使用Pascal風(fēng)格命名
示例代碼如下:

1.11 如果if語(yǔ)句內(nèi)容只有一行,可以不加花括號(hào),但是必須和if語(yǔ)句位于同一行
范例1.9 中的if判斷實(shí)際上與下面的語(yǔ)句是等效的:

1.12 調(diào)用類(lèi)型內(nèi)部其他成員,需加this;調(diào)用父類(lèi)成員,需加base
示例代碼如下:

1.13 類(lèi)型內(nèi)部的私有和受保護(hù)字段,使用Camel風(fēng)格命名,但加“_”前綴
代碼示例如下:

1.14 不能出現(xiàn)公有字段
如果需要公有字段,使用屬性進(jìn)行包裝。
1.15 類(lèi)型成員的排列順序
類(lèi)型成員的排列順序自上而下依次為:
字段:私有字段、受保護(hù)字段
屬性:私有屬性、受保護(hù)屬性、公有屬性
事件:私有事件、受保護(hù)事件、公有事件
構(gòu)造函數(shù):參數(shù)數(shù)量最多的構(gòu)造函數(shù),參數(shù)數(shù)量中等的構(gòu)造函數(shù),參數(shù)數(shù)量最少的構(gòu)造函數(shù)
方法:重載方法的排列順序與構(gòu)造函數(shù)相同,從參數(shù)數(shù)量最多往下至參數(shù)最少。

1.16 委托和事件的命名
委托以EventHandler作為后綴命名,例如 SalesOutEventHandler。
事件以其對(duì)應(yīng)的委托類(lèi)型,去掉EventHandler后綴,并加上On前綴構(gòu)成。
例如,對(duì)于SalesOutEventHandler委托類(lèi)型的事件,其事件名稱(chēng)為:OnSalesOut。
示例代碼如下:

1.17 返回bool類(lèi)型的方法、屬性的命名
如果方法返回的類(lèi)型為bool類(lèi)型,則其前綴為Is、Can或者 Try,例如:

1.18 常見(jiàn)集合類(lèi)型后綴命名
凡符合下表所列的集合類(lèi)型,應(yīng)添加相應(yīng)的后綴。
| 說(shuō)明 | 后綴 | 示例 |
| 數(shù)組 | Array | int[] productArray |
| 列表 | List | List<Product> productList |
| DataTable/HashTable | Table | HashTable productTable |
| 字典 | Dictionary | Dictionay<string,string> productDictionary |
| EF中的DbSet /DataSet | Set | DbSet<Product> productSet |
1.19 常見(jiàn)后綴命名
凡符合下表所列的局部變量、方法參數(shù)、字段、屬性,均需添加相應(yīng)的后綴。
| 說(shuō)明 | 后綴 | 示例 | 示例說(shuō)明 |
| 費(fèi)用相關(guān) | Cost | ShipCost | 運(yùn)輸費(fèi) |
| 價(jià)格相關(guān) | Price | ProductUnitPrice | 產(chǎn)品單價(jià) |
| 消息相關(guān) | Message(棄用Note) | SuccessMessage | 成功消息 |
| 日期相關(guān) | Date(棄用Time) | OrderDate | 下單日期 |
| 計(jì)數(shù)、數(shù)量相關(guān) | Count(棄用Time) | LoginCount | 登錄次數(shù) |
| 鏈接地址相關(guān) | Url | BlogUrl | 博客鏈接 |
| 圖片相關(guān) | Image | SignImage | 簽名圖片 |
| 金額相關(guān) | Amount | PrepaidAmount | 預(yù)付款 |
| 點(diǎn)數(shù)、積分相關(guān) | Point | MemberPoint | 會(huì)員積分 |
| 記錄、日志相關(guān) | Record(棄用Log) | ErrorRecord | 錯(cuò)誤記錄 |
| 配置相關(guān) | Config | DataBaseConfig | 數(shù)據(jù)庫(kù)配置 |
| 狀態(tài)相關(guān) | Status | OrderStatus | 訂單狀態(tài) |
| 模式、方式相關(guān) | Mode | OpenMode | 打開(kāi)方式 |
| 種類(lèi)相關(guān) | Category / Type 二選一 | UserCategory | 用戶種類(lèi) |
| 工廠類(lèi)相關(guān) | Factory | ConnectionFactory | 連接工廠 |
| 啟用相關(guān) | Enabled | ExportEnabled | 開(kāi)啟導(dǎo)出 |
| 流相關(guān) | Stream | UploadStream | 上傳流 |
| 讀取器相關(guān) | Reader | ExcelReader | Excel讀取器 |
| 寫(xiě)入器相關(guān) | Writer | ExcelWriter | Excel寫(xiě)入器 |
| 適配器相關(guān) | Adapter | IntroOPAdapter | IntroOP適配器 |
| 提供器相關(guān) | Provider | MemebershipProvider | 會(huì)員信息提供器 |
| 包裝器相關(guān) | Wrapper | ProductWrapper | Product包裝器 |
| 連接相關(guān) | Connection | ExcelConnection | Excel連接 |
1.20 常見(jiàn)類(lèi)型命名
凡存在下表中的類(lèi)型,需采用下表指定的名稱(chēng)命名。
| 類(lèi)型 | 命名 | 類(lèi)型 | 命名 |
| 客戶 | Customer | 分銷(xiāo)商 | Reseller |
| 零售商 | Retailer | 經(jīng)銷(xiāo)商/批發(fā)商 | Dealer |
| 用戶 | UserInfo(User為數(shù)據(jù)庫(kù)關(guān)鍵字) | 訂單 | OrderInfo(Order為數(shù)據(jù)庫(kù)關(guān)鍵字) |
| 供應(yīng)商 | Supplier | 管理員 | Admin |
| 密碼 | Password | 會(huì)員 | Member |
| 評(píng)論 | Remark(棄用Comment) | 文章 | Article |
| 新聞 | News | 發(fā)票 | Invoice |
| 導(dǎo)入 | Import | 導(dǎo)出 | Export |
| 公司、企業(yè) | Company(棄用Enterprise) | 產(chǎn)品 | Product |
| 省份 | Province | 城市 | City |
| 區(qū)縣 | District | 地址 | Address |
| 角色 | Role(棄用Group) | 權(quán)限 | Authority(棄用Permission) |
| 倉(cāng)庫(kù) | Warehouse | 工廠 | Plant |
| 登錄 | Login(棄用SignIn) | 登出 | LogOut(棄用SignOut) |
| 創(chuàng)建 | Create(棄用Add) | 編輯 | Edit |
| 更新 | Update | 刪除 | Remove(棄用Delete) |
| 照片 | Photo | 圖片 | Image |
1.21 常見(jiàn)字段、屬性命名
字段、屬性種類(lèi)比較繁雜,因此僅列出最常用的幾項(xiàng)。
| 類(lèi)型 | 名稱(chēng) | 類(lèi)型 | 名稱(chēng) |
| Id(int型) | Id(“d”小寫(xiě),棄用ID) | GuidId(Guid型) | Id |
| Name | 名稱(chēng) | Title | 標(biāo)題 |
| Remark | 備注、描述(棄用Memo、Description) | Category | 種類(lèi)(棄用Class、Type) |
| Linkman | 聯(lián)系人 |
2. XHTML 代碼風(fēng)格要求2.1 如果XHTML標(biāo)記有層次,那么代碼也要有層次
下面是書(shū)寫(xiě)符合要求的例子:

下面是書(shū)寫(xiě) 不符合要求 的例子:

2.2 所有標(biāo)記必須閉合
示例代碼如下:

2.3 如果標(biāo)記中間代碼超過(guò)20行,則應(yīng)在標(biāo)記末尾加注標(biāo)識(shí)
標(biāo)注方式如下:

3. CSS 代碼風(fēng)格要求3.1 代碼使用半展開(kāi)
設(shè)置方法參考1.4節(jié)。
3.2 使用Tab作為縮進(jìn),并設(shè)置縮進(jìn)大小為4
設(shè)置方法參考1.5節(jié)。
3.3 代碼注釋
注釋主要說(shuō)明該樣式應(yīng)用于頁(yè)面的哪個(gè)部分,而非說(shuō)明樣式的應(yīng)用效果,代碼注釋風(fēng)格如下所示:

3.4 代碼編寫(xiě)
每一個(gè)樣式設(shè)置必須獨(dú)占一行,不能位于同一行,下面是符合要求的寫(xiě)法:

下面是 不符合要求 的寫(xiě)法:

3.5 嵌入式樣式的比例不超過(guò)樣式表代碼總量的10%
嵌入式樣式為直接寫(xiě)在HTML標(biāo)記內(nèi)部的樣式,如下圖所示:

3.6 內(nèi)聯(lián)式樣式的比例不超過(guò)樣式表代碼總量的30%
內(nèi)聯(lián)式樣式為寫(xiě)在<head></head>中的樣式,如下圖所示:

內(nèi)聯(lián)式樣式,不能 寫(xiě)在<body></body>之間。
3.7 外聯(lián)式樣式表的比例不少于樣式表代碼總量的60%
外聯(lián)式樣式表為寫(xiě)在.css文件中的樣式,通過(guò)link引入到XHTML頁(yè)面中,如下圖所示:

4. JavaScript 代碼風(fēng)格要求4.1 代碼使用半展開(kāi)
設(shè)置方法參考1.4節(jié)。
4.2 使用Tab作為縮進(jìn),并設(shè)置縮進(jìn)大小為4
設(shè)置方法參考1.5節(jié)。
4.3 代碼注釋
代碼注釋需要說(shuō)明“函數(shù)功能”、“入口參數(shù)”、“返回值”,注釋范例如下:

其中第一行說(shuō)明函數(shù)功能;第二行說(shuō)明入口參數(shù);最后一行說(shuō)明返回值
4.4 不得出現(xiàn)內(nèi)嵌式代碼
內(nèi)嵌式代碼是指寫(xiě)在XHTML標(biāo)記中的JavaScript代碼,下面的寫(xiě)法是 不符合要求 的:

4.5 內(nèi)聯(lián)式代碼占JavaScript的總量不得超過(guò)40%
內(nèi)聯(lián)式代碼是指寫(xiě)在<head />或者<body />之間的代碼:

4.6 外聯(lián)式代碼占JavaScript的總量至少為60%
外聯(lián)式代碼指寫(xiě)在單獨(dú)的.js文件中,然后通過(guò)script標(biāo)記連接到XHTML頁(yè)面中的代碼。

感謝閱讀,希望這篇文章能給你帶來(lái)幫助!

- 快速設(shè)置IDEA代碼風(fēng)格為Google風(fēng)格
- eslint+prettier統(tǒng)一代碼風(fēng)格的實(shí)現(xiàn)方法
- 配置eslint規(guī)范項(xiàng)目代碼風(fēng)格
- 實(shí)例詳解Vue項(xiàng)目使用eslint + prettier規(guī)范代碼風(fēng)格
- 如何使用 Pylint 來(lái)規(guī)范 Python 代碼風(fēng)格(來(lái)自IBM)
- Pycharm學(xué)習(xí)教程(2) 代碼風(fēng)格
- php好代碼風(fēng)格的階段性總結(jié)
- 當(dāng)前流行的JavaScript代碼風(fēng)格指南
- 你應(yīng)該知道的Ruby代碼風(fēng)格
- 關(guān)于更改Zend Studio/Eclipse代碼風(fēng)格主題的介紹
- JQuery入門(mén)—JQuery程序的代碼風(fēng)格詳細(xì)介紹
- Java黑科技之通過(guò)Google Java Style 文件配置IDEA和Ecplise代碼風(fēng)格
相關(guān)文章
大型門(mén)戶網(wǎng)站實(shí)現(xiàn)的十四大技術(shù)小結(jié)
參考下大型門(mén)戶網(wǎng)站的技術(shù),大家可以盡量的備份好服務(wù)器。2010-10-10
.net core webapi 大文件上傳到wwwroot文件夾的操作代碼
這篇文章主要介紹了.net core webapi 大文件上傳到wwwroot文件夾的操作代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12
OpenCV 3.1.0+VS2015開(kāi)發(fā)環(huán)境配置教程
這篇文章主要為大家詳細(xì)介紹了OpenCV 3.1.0+VS2015開(kāi)發(fā)環(huán)境配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
ASP.NET?MVC增加一條記錄同時(shí)添加N條集合屬性所對(duì)應(yīng)的個(gè)體
這篇文章介紹了ASP.NET?MVC增加一條記錄同時(shí)添加N條集合屬性所對(duì)應(yīng)個(gè)體的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
GridView高效分頁(yè)和搜索功能的實(shí)現(xiàn)代碼
GridView高效分頁(yè)和搜索功能的實(shí)現(xiàn)代碼,需要的朋友可以參考一下2013-03-03
asp.net 使用js分頁(yè)實(shí)現(xiàn)異步加載數(shù)據(jù)
這篇文章主要介紹了asp.net使用js分頁(yè)實(shí)現(xiàn)異步加載數(shù)據(jù),需要的朋友可以參考下2014-04-04
ynamic LINQ創(chuàng)建高級(jí)查詢服務(wù)
這篇文章主要介紹了ynamic LINQ創(chuàng)建高級(jí)查詢服務(wù),如何使用Dynamic LINQ輕松實(shí)現(xiàn)更強(qiáng)大的高級(jí)查詢服務(wù),下面文章內(nèi)容具有一的的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03
關(guān)于.NET6?Minimal?API的使用方式詳解
本文我們主要是介紹了ASP.NET?Core?6?Minimal?API的常用的使用方式,在.NET6中也是默認(rèn)的項(xiàng)目方式,整體來(lái)說(shuō)卻是非常的簡(jiǎn)單、簡(jiǎn)潔、強(qiáng)大、靈活,不得不說(shuō)Minimal?API卻是在很多場(chǎng)景都非常適用的2021-12-12

