美文网首页
C#代码规范

C#代码规范

作者: TomGui | 来源:发表于2019-10-20 19:36 被阅读0次

1.注释规范

类型、属性、委托、方法、方法参数,根据需要添加注释。
如果类型、属性、委托、方法、方法参数的名称已经是自解释了,不需要加注释;否则需要添加注释。
当添加注释时,添加方式如下所示:

namespace CodingStandards
{
    /// <summary>
    /// 产品售光时调用的委托
    /// </summary>
    public delegate void SaleOutEventHandler();

    /// <summary>
    /// 产品类,描述产品的基本信息
    /// </summary>
    public class Product
    {
        /// <summary>
        /// 产品名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 定义产品被售光时的处理逻辑
        /// </summary>
        public event SaleOutEventHandler OnSaleOut;

        /// <summary>
        /// 根据产品Id查找产品
        /// </summary>
        /// <param name="id">产品Id</param>
        /// <returns>符合此Id的产品实例,当不存在该产品时,返回null</returns>
        public Product GetProduct(int id)
        {
            //根据订单状态不同,处理不同的逻辑 
            if (flag == 0)  //当订单状态为客户提交时,….
            {
                statement;
            }
            else if (flag == 1) //当状态为已确认时,… 
            {
            }
            //根据订单状态不同,处理不同的逻辑 
            switch (flag)
            {
                case "N":  //客户提交状态
                    newFlag = 1;
                    break;
                case "I":  //传真发送状态
                    newFlag = 2;
                    break;
            }

            return null;
        }

        /// <summary>
        /// 产品类型
        /// </summary>
        public enum ProductType
        {
            出境 = 1,
            国内游 = 2
        }
    }
}

2.命名规范

2.1基本命名规范

  • 在命名时需要使用有意义的名称
  • 优先使用英文,如果英文没有合适的单词,可以使用拼音,如城市名称等
  • 禁止使用中文命名,唯一例外,枚举类型中的枚举项推荐使用中文
  • 命名不能使用缩写,如必须写成person,不能写成per

2.2 使用Pascal风格(单词首字母大写)命名

  • 命名空间
namespace CodingStandards{}
  • 类型
public class Product{}
  • 枚举类型、枚举值
public enum ProductType
{
    出境 = 1,
    国内游 = 2
}
  • 方法名
public Product GetProduct(int id){}
  • 常量
const int Value = 10;

2.3使用Camel风格(首字母小写,其后每个单词的首字母大写)命名

  • 变量
int name;
int personId;
  • 方法参数
public void Method(int personId){}
  • 类型内部的私有和受保护字段,使用Camel风格命名,但加“_”前缀
public class Person
{
    private string _name;
}

2.4其他命名规则

  • 接口以I(大写的i)为前缀命名
public interface ISpeak {}
  • 返回bool类型的方法、属性的命名
    如果方法返回的类型为bool类型,则其前缀为Is、Can、Has或者Try,例如:
public class Product
{
    public bool IsSaleOut
    {
        get { return true; }
    }

    public bool TrySale(int id)
    {
        return true;
    }

    public bool CanSale(int id)
    {
        return true;
    }
}
  • 委托以EventHandler作为后缀命名
public delegate void WorkEventHandler ();
  • 事件以其对应的委托类型,去掉EventHandler后缀,加上On前缀
public event WorkEventHandler OnWork;
  • 抽象类以Abstract为前缀或者以Base为后缀命名
public abstract class AbstractPerson {}
  • 异常类型以Exception为后缀
public class LoginException {}
  • 类型名称和源文件名称必须一致
    当class命名为Product时,其源文件命名只能是Product.cs

3.编码规范

  • 1.一个方法只做一件事,当你无法为你的方法起一个准确的名称时,很可能你的方法不止做了一
  • 2.件事,特别是你想在方法名中加入:And,Or,If等词时,优先使用已有的方法、组件
  • 3.不能写“魔数”,不能硬编码,如果可以,写入数据字典>配置文件>定义枚举>定义常量
  • 4.不应出现复杂的长条件,应该将长条件封装成方法
  • 5.尽可能避免嵌套判断,而且结果应尽早返回
  • 6.不同类型的操作符混合使用,用“()”给出优先级,应避免过于复杂的运算,如果可以,分步计算
    避免方法过多参数(超过3个),过多的参数,会导致方法不稳定,应封装后使用实体
  • 7.写具有表达力的代码
  • 8.如果使用的try/catch结构,一定要处理异常,而不是空的异常块
  • 9.读取DataTable时,使用列名而不是索引
  • 10.对象、集合使用前要做好非空和集合大小判断
  • 11.核心功能不能和核心功能使用同一事务,并做好容错处理(try/catch)
  • 12.对外系统的安全性必须要考虑
  • 13.switch语句必须包含default语句
  • 14.方法重载,必须放在一起连续出现

4.布局规范

4.1用Tab作为缩进,并设置缩进大小为4

Visual Studio 2017中设置方法:菜单工具-选项-文本编辑器-C#-制表符,把制表符大小和缩进大小设置成4,点确定

4.2左右花括号必须独占一行,括号内容为空时可在一行

Visual Studio 2017 中设置方法:菜单工具-选项-文本编辑器-C#-代码样式-格式设置-新行

public void Method(int id)
{
    int i = 1;
    int j = 2;
}
public void Method(int id) {}

4.3类型成员的排列顺序

类型成员的排列顺序自上而下依次为:

  • 字段:私有字段、受保护字段
  • 属性:私有属性、受保护属性、公有属性
  • 事件:私有事件、受保护事件、公有事件
  • 构造函数:参数数量最多的构造函数,参数数量中等的构造函数,参数数量最少的构造函数
  • 方法:重载方法的排列顺序与构造函数相同,从参数数量最多往下至参数最少
/// <summary>
/// 产品类,描述产品的基本信息
/// </summary>
public class Product
{
    private int _field1;
    protected int _filed2;

    private int _property1 { get; set; }
    protected int _property2 { get; set; }
    public int _property3 { get; set; }

    private SaleOutEventHandler _event1;
    protected SaleOutEventHandler _event2;
    public SaleOutEventHandler _event3;

    public Product(int param1, int param2) { }
    public Product(int param1) { }
    public Product() { }

    public Product GetProduct(int id, string area) { return null; }
    public Product GetProduct(int id) { return null; }
    public Product GetProduct() { return null; }
}

附表1:常见集合类型后缀命名

凡符合下表所列的集合类型,应添加相应的后缀

说明 后缀 示例
数组 Array int[] productArray
列表 List List<Product> productList
DataTable/HashTable Table HashTable productTable
字典 Dictionary Dictionay<string,string> productDictionary
EF中的DbSet/DataSet Set DbSet<Product> productSet

附表2:常见后缀命名

凡符合下表所列的局部变量、方法参数、字段、属性,均需添加相应的后缀

说明 后缀 示例 示例说明
费用相关 Cost ShipCost 运输费
价格相关 Price ProductUnitPrice 产品单价
消息相关 Message SuccessMessage 成功消息
日期相关 Date OrderDate 下单日期
时间相关 Time OrderTime 下单日期
计数、数量相关 Count LoginCount 登录次数
链接地址相关 Url BlogUrl 博客链接
图片相关 Image SignImage 签名图片
金额相关 Amount PrepaidAmount 预付款
点数、积分相关 Point MemberPoint 会员积分
记录、日志相关 Record ErrorRecord 错误记录
配置相关 Config DataBaseConfig 数据库配置
状态相关 Status OrderStatus 订单状态
模式、方式相关 Mode OpenMode 打开方式
种类相关 Category/Type二选一 UserCategory 用户种类
工厂类相关 Factory ConnectionFactory 连接工厂
启用相关 Enabled ExportEnabled 开启导出
流相关 Stream UploadStream 上传流
读取器相关 Reader ExcelReader Excel读取器
写入器相关 Writer ExcelWriter Excel写入器
适配器相关 Adapter IntroOPAdapter IntroOP适配器
提供器相关 Provider MemebershipProvider 会员信息提供器
包装器相关 Wrapper ProductWrapper Product包装器
连接相关 Connection ExcelConnection Excel连接

相关文章

  • Rider配置团队共享的代码风格

    背景:目前团队使用的是Unity/C#开发,因此需要设置C#的代码规范1、C#代码风格配置路径:File | Se...

  • C# 代码规范

    代码规范 用Tab作为缩进,并设置缩进大小为4:缩进 换行,当一个表达式超过一行时,根据以下原则进行处理:在逗号后...

  • C#代码规范

    1.注释规范 类型、属性、委托、方法、方法参数,根据需要添加注释。如果类型、属性、委托、方法、方法参数的名称已经是...

  • .Net 开发规范

    .Net 开发规范一、C# 编码规范1. 代码组织与风格1.1. Tab要使一个Tab为4个空格长。1.2. 缩进...

  • C# 代码书写规范--备忘

    1、所有命名空间、类型名称使用Pascal风格,函数名采用 首字母大写驼峰式写法,例如 public class ...

  • python代码规范

    从C#转到了python,重新梳理一下代码规范。 一、四行缩进 1、注意子代码块; 2、注意括号中的换行; 二、空...

  • java与C#的AES加密、解密

    java代码: C#代码:

  • Unity Shader 切换贴图 (贴图渐变)

    c#代码

  • Web 端代码规范

    目录 1、代码规范概述 2、代码规范流程搭建 3、代码规范细则 1、代码规范概述 良好的代码规范能够提供软件的可读...

  • H5 SSE

    html C# 代码

网友评论

      本文标题:C#代码规范

      本文链接:https://www.haomeiwen.com/subject/ikqomctx.html