(轉載)C#格式規範

前言

以前工做中整理的一篇編碼規範。html

代碼註釋

註釋約定

只在須要的地方加註釋,不要爲顯而易見的代碼加註釋
使用 /// 生成的xml標籤格式的文檔註釋編輯器

方法註釋

全部的方法都應該以描述這段代碼的功能的一段簡明註釋開始(方法是幹什麼)。這種描述不該該包括執行過程細節(它是怎麼作的)函數

/// <summary>
/// 把對象類型轉化爲指定類型
/// </summary>
/// <typeparam name="T">動態類型 </typeparam>
/// <param name="value">要轉化的源對象 </param>
/// <returns> 轉化後的指定類型的對象,轉化失敗引起異常。</returns>
public static T CastTo<T>(this object value)

代碼行註釋工具

若是某一功能須要多行代碼,並有多個邏輯結構,應在此代碼前添加註釋,說明此塊代碼的處理思路及注意事項等
註釋重新行增長,與代碼開始處左對齊
註釋雙斜線與註釋之間以空格分開,示例以下:this

1 public void Dispose(){
2     // 若是鏈接已打開,則關閉鏈接並釋放資源
3     if(this.connection.State == ConnectionState.Open ){
4         this.connection.Close();
5         this.connection.Dispose();
6     }
7 }

變量註釋編碼

變量需添加註釋,說明變量的用途
Class級變量使用 /// 生成的Xml標籤格式的文檔註釋spa

/// <summary>
/// 文檔名稱
/// </summary>
public static string docName = "";

 

方法級的變量註釋能夠放在變量聲明語句後,與上下行的註釋左對齊,註釋與代碼間以 Tab 鍵分隔code

public void CreateDoc() {
    string docType = "";                   //文檔類型
    string author = "";                    //做者
    DateTime createDate = DateTime.Now;    //建立世界
}

 

命名規範

命名基本約定

PascalCasing:xml

包含一個或多個單詞,每一個單詞首字母大寫,其他小寫
使用範圍:命名空間、類、接口、方法、屬性、事件、非私有字段、枚舉值htm

namespace System.IO         
public static class Console
public enum FileAccess

 

camelCasing:

包含一個或多個單詞,第一個單詞首字母小寫,其他單詞首字母大寫
使用範圍:方法參數、局部變量

public string GetName(int productId){
    string productName = null;
}

**_camelCasing:**

"_"+camelCasing的方式
使用範圍:私有字段

private string _productName;

UPPER_CAPS:

包含多個單詞,每一個單詞的全部字母大寫,單詞之間使用"_"鏈接
使用範圍:const常量

public const string DEFAULT_NAME = "default";

 

示例:

namespace ConsoleApp {
    public delegate void SalesOutEventHandler();
    
    public class Product {
        public event SalesOutEventHandler OnSalesOut;
        
        public Product GetProductById(int productId) {
            return null;
        }
        
        private enum ProductType {
        }
    }
}

標識符命名約定

類和接口

類的名字使用名詞
避免使用單詞縮寫,除非是廣爲人知的,好比: HTTP , IO
接口以 I 字母開頭
同一項目不一樣命名空間中的類,命名避免重複

方法

第一個單詞爲動詞
返回值爲 bool 類型,則加 Is , Can , Try前綴

變量

儘可能使用短而有意義的單詞
單字符變量名通常用於生命週期很是短的變量,如 for , foreach 中遞增變量能夠被命名爲 i
若是變量表示集合,則變量名使用複數,如 RowsCount
命名控件使用匈牙利命名法,前綴遵循同一個縮寫表
在帶單位的值變量後加「_camelCasing」格式的單位,如:

 public void CreateCache(int cacheSize_mb)

 

類型成員排列順序

類型成員的排列順序自上而下依次爲:

字段: 私有字段、受保護字段
屬性: 私有屬性、受保護屬性、公有屬性
事件: 私有事件、受保護事件、公有事件
構造函數: 參數數量最少的構造函數,參數數量中等的構造函數,參數數量最多的構造函數
方法: 重載方法的排列順序與構造函數相同,從參數數量最少往下至參數最多

其餘規範

代碼長度

每行代碼不宜過長,應在屏幕寬度以內,約爲80-120個字符左右。換行規則以下:

在逗號後換行
在操做符後換行
在高層換行而不是在低層換行
換行後與上一行語句對齊

推薦寫法:

var n = a * b / (c - g + f) +
        4 * z;

不推薦寫法:

var n = a * b / (c - g + 
    f) + 4 * z;

 

方法行數

每一個方法的有效代碼行數(不包括註釋和空行)應保持在50行之內

空白

空行是爲了將邏輯相關的代碼分塊,以便提升閱讀性
在如下狀況使用兩個空行:

類聲明和接口聲明之間
兩個類聲明之間
枚舉與類聲明之間

在如下狀況使用一個空行:

方法與方法、屬性與屬性之間
方法中變量聲明與語句之間
方法與方法之間
方法不一樣邏輯塊之間
類中屬性與方法、屬性與字段、方法與字段之間
註釋與它註釋的語句之間不空行,與其餘語句之間空一行

在如下狀況使用空格:
在VS編輯器中可使用快捷鍵格式化代碼

參數列表的逗號後,

void UpdateDate(int a, int b)

二元操做符,

a += b - c;

強制類型轉換後,

c = (char) a;

 

代碼縮進

代碼縮進使用Tab鍵,不要使用空格,Tab鍵的寬度爲4個字符,VS中設置以下:

【工具】-【選項】-【文本編輯器】-【C#】-【製表符】,選中【保留製表符】

代碼半展開

把花括號放在前一條語句的末尾,VS中設置以下:

【工具】-【選項】-【文本編輯器】-【C#】-【格式設置】-【新行】,取消右側全部勾選

附錄

註釋內容

項目 註釋內容
類的目的,開發歷史
接口 接口的目的,如何使用
字段/屬性 字段描述
方法註釋 方法做用,返回值,拋出的異常,調用的前提和後置條件
方法內部註釋 控制結構,複雜的代碼,處理順序
參數 用來作什麼,約束,前提條件
局部變量 用處,目的

XML文檔註釋

MSDN文檔註釋標籤 https://msdn.microsoft.com/zh-cn/library/5ast78ax(v=vs.140).aspx

標記 說明
<c> 提供了一種將說明中的文本標記爲代碼的方法
<code> 提供了一種將多行指示爲代碼的方法
<example> 能夠指定使用方法或其餘庫成員的示例。通常狀況下,這將涉及到<code>標記的使用。
<exception> 對可從當前編譯環境中獲取的異常的引用。
<include> 引用描述源代碼中類型和成員的另外一文件中的註釋。
<list> 用於定義表或定義列表中的標題行。
<para> 用於諸如<summary>、<remarks> 或 <returns> 等標記內,使您將結構添加到文本中。
<param> 應當用於方法聲明的註釋中,以描述方法的一個參數。
<paramref> 提供了一種指示詞爲參數的方法。
<permission> 將成員的訪問記入文檔。
<remarks> 用於添加有關某個類型的信息,從而補充由 <summary> 所指定的信息。
<returns> 應當用於方法聲明的註釋,以描述返回值。
<see> 從文本內指定連接。
<seealso> 對能夠經過當前編譯環境進行調用的成員或字段的引用。
<summary> 應當用於描述類型或類型成員。
<value> 描述屬性。

VS經常使用快捷鍵

功能 VS2010 VS2013 說明
文檔格式化 Ctrl+E, Ctrl+D Ctrl+K, Ctrl+D 格式化當前文檔
選定內容格式化 Ctrl+E, Ctrl+F Ctrl+K, Ctrl+F 格式化選中內容
註釋 Ctrl+E, Ctrl+C Ctrl+K, Ctrl+C 註釋當前行
取消註釋 Ctrl+E, Ctrl+U Ctrl+K, Ctrl+U 取消註釋當前行
複製 Ctrl+C - 複製光標所在行,不須要選中
剪切 Ctrl+X - 剪切光標所在行,不須要選中
刪除 Ctrl+L - 刪除光標所在行,不須要選中
摺疊 - Ctrl+M, Ctrl+O 摺疊當前文檔
展開摺疊 - Ctrl+M, Ctrl+L 展開當前文檔

參考

MSDN開發語言和工具 https://msdn.microsoft.com/zh-cn/library/aa187916.aspxC#語言規範 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#\Specifications\2052\CSharp Language Specification.docx

相關文章
相關標籤/搜索