1. 程式人生 > >C#格式規範

C#格式規範

括號 eap file 多個 前綴 重載 命名空間 amp ssi

前言

之前工作中整理的一篇編碼規範。

代碼註釋

註釋約定

只在需要的地方加註釋,不要為顯而易見的代碼加註釋
使用 /// 生成的xml標簽格式的文檔註釋

方法註釋

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

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

代碼行註釋

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

public void Dispose(){
    // 如果連接已打開,則關閉連接並釋放資源
    if(this.connection.State == ConnectionState.Open ){
        this.connection.Close();
        this.connection
.Dispose(); } }

變量註釋

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

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

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

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

命名規範

命名基本約定

PascalCasing:

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

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.aspx
C#語言規範 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#\Specifications\2052\CSharp Language Specification.docx

C#格式規範