C#命名规范中文版/C#编码规范中文版

最新文档地址https://github.com/hiramtan/CSharpNamingGuidelines_Chinese

C#命名规范中文版/C#编码规范中文版

示例

/*******************************************************************
 * Description:This is a example class
 * Version: 1.0.0
 * Date: 20180218
 * Author: Hiram  
 * Email: hiramtan@live.com    
 * Copyright @ www.wikipedia.org
 *******************************************************************/

using System;

/// <summary>
/// 命名空间(Pascal)
/// </summary>
namespace Namespace
{
    /// <summary>
    /// 类(Pascal)
    /// </summary>
    public class Class
    {
        /// <summary>
        /// 属性(Pascal)
        /// </summary>
        public int Property { get; set; }

        /// <summary>
        /// 委托(Pascal)
        /// EventHandler后缀
        /// </summary>
        public delegate void EvnetHandler();

        /// <summary>
        /// 事件(Pascal):On前缀
        /// </summary>
        public event EvnetHandler OnEvent;

        /// <summary>
        /// 公有字段(Pascal)
        /// </summary>
        public int Field1;

        /// <summary>
        /// 受保护字段(Pascal)
        /// </summary>
        protected int Field2;

        /// <summary>
        /// 私有字段(Camel)
        /// </summary>
        private int field3;
        
        /// <summary>
        /// 方法(Pascal)
        /// </summary>
        /// <param name="args">参数(Camel)</param>
        public void Method(int args)
        {
            //局部变量(Camel)
            int variable = 10;
        }
    }

    /// <summary>
    /// 接口(Pascal)
    /// </summary>
    public interface IInterface
    {
        /// <summary>
        /// 属性接口(Pascal)
        /// </summary>
        int Property { get; set; }

        /// <summary>
        /// 方法接口(Pascal)
        /// </summary>
        /// <param name="args"></param>
        void Method(int args);
    }

    /// <summary>
    /// 枚举(Pascal)
    /// </summary>
    enum Enum
    {
        Enum1,//枚举值(Pascal)
        Enum2,//枚举值(Pascal)
    }
}

参考资料


通用规则

所有的命名都是以下面两种方式进行命名:

  • PascalCasing(匈牙利命名法:每个词的第一个字母大写)
  • camelCasing(骆驼命名法:第一个词的第一个字母小写,之后每个词的第一个字母大写)

类型|命名方式|示例 ---|:--:|---: Namespace|Pascal|namespace System.Security { ... } Type|Pascal|public class StreamReader { ... } Interface|Pascal|public interface IEnumerable { ... } Method|Pascal|public virtual string ToString(); Property|Pascal|public int Length { get; } Delegate|Pascal|public delegate void EvnetHandler(); Event|Pascal|public event EventHandler Exited; Public Field|Pascal|public int Min = 0; Protected Field|Pascal|public int Min = 0; private Field|Camel|public int min = 0; Enum|Pascal|public enum FileMode Parameter|Camel|public static int ToInt32(string value) Local Variable|Camel|void Method(){int number = 10;}


特殊说明

注释

文件注释: 文件注释以如下方式进行,在扩展注释时(回车换行时)会自动添加注释行.

/*******************************************************************
* Description:This is a example class
* Version: 1.0.0
* Date: 20180218 
* Author: Hiram  
* Email: hiramtan@live.com    
* Copyright @ www.wikipedia.org
*******************************************************************/

命名空间 类型 接口 方法名 属性 事件 字段 枚举:以"///"的方式注释,编辑器会自动完善注释,并且可以用生成工具直接生成代码注释文档.

      /// <summary>
      /// 方法(Pascal)
      /// </summary>
      /// <param name="args">参数(Camel)</param>
      public void Method(int args)
      {
          //局部变量(Camel)
          int variable = 10;
      }

其他注释:以"//"的方式注释在上一行或行尾添加注释(比如局部变量,逻辑行) 段落注释:以如下方式进行

/*
       public void Method()
       {

       }
*/

待办及高亮:在注释中添加"ToDo"高亮显示注释

命名空间

类型

泛型默认T,U,V,W...

接口

接口定义以"I"开头,比如IInterface,IPlayer

方法

属性

属性都以Pascal方式命名

委托

微软官方建议添加以下两种后缀

  • EventHandler
  • Callback 微软官方不建议添加以下后缀
  • Delegate

事件

  • 微软官方建议:事件参数添加后缀"EventArgs"
  • 习惯命名:事件以On为前缀(比如OnClick)

字段

微软官方只规定了public/protected以Pascal方式命名,对internal,private类型的字段没有说明,因此各种第三方规范和插件中对私有字段规范也不一致. 针对官方的示例代码,书写习惯,智能提示,代码补全和约定俗成的C#规范,建议private采用Camel方式命名,非Private字段采用Pascal方式命名.

  • public/protected/internal以Pascal方式命名
  • private以Camel方式命名
       public int Field1;
       public static int Field2;
       public readonly int Field3;
       public const int Field4 = 4;

       internal int Field5;
       internal static int Field6;
       internal readonly int Field7;
       internal const int Field8 = 8;

       private int field9;
       private static int field10;
       private readonly int field11;
       private const int field8 = 12;
  • 以m_为前缀的方式不建议(C++命名方式)
  • 以_为前缀的方式不建议(ReSharper命名方式)
  • 以类型为前缀的方式不建议(比如bool类型的字段以b为前缀,枚举以e为前缀)
  • 以类型为后缀的方式不建议(比如单位列表unitList,直接取名为units)

枚举

参数

局部变量

局部变量可以使用var自动声明类型

转载于:https://my.oschina.net/u/2287125/blog/1857771

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值