zoukankan      html  css  js  c++  java
  • C#代码规范精简表

    C#代码规范精简表

    一、  目的

    1. 为了统一公司软件开发设计过程的编程规范
    2. 使开发人员能很方便的理解每个目录,变量,控件,类,方法的意义
    3. 为了保证编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。
    4. 编码规范和约定必须能明显改善代码可读性,并有助于代码管理、分类范围适用于企业所有基于.NET平台的软件开发工作

    二、  范围

    本规范适用于.NET开发人员,作用于软件项目开发的代码编写阶段和后期维护阶段。

    三、  注释规范

    1. 公共类型必须添加注释,详细请参考命名规范例子所示:
    1. 修改BUG需要改变代码时必须添加注释,包含改动时间,BUG编号,修改原因等信息如下所示:

    //改动人:### 改动时间:### Bug编号:##:修改内容:###

    1. 核心逻辑代码必须要有注释

    例如:

    If(string.Compare(str1,str2).E         quase(0))

    {

     A ab=new A;

    /*

    以下代码包含:

    1:从库存查询结果

    2: 按 结果拆分为消耗品和 再生品

    3:导出到Excel

    */

    }

     

    四、  命名规范

    1. 名字应该能够标识事物的特性。
    2. 类名以、方法名称、公共属性 首写字母必须大写,并只能由字母组成。类变量以m_## 组成,方法体变量以 _## 组成。

    例:

    ///<summary>

    ///新Bug实体类

    ///<summary>

    public class NewBugInstance()

    {   

     

         private string m_BugInstance;//局部变量规范

     

         ///<summary>

    ///公共字段模板

    ///<summary>

             public string BugInstance

    {

       get;

       set;

    }

         ///<summary>

    ///公共字段模板

    ///<summary>

         public bool Equase()

    {

       int _Temp;//方法体变量模板

       //修改人:张三,修改时间:2012-0604,Bug编号:BUG123,修改内容:将字符串比较时的”==”改成string.Compare()或者String.Equase().

    If(string.Compare(str1,str2).Equase(0))

    {

    }

    }

    }

     

    1. 基础命名规范

    抽象基类

    -Base

    示例:SessionBase

    接口

    I-

    示例:ICheckMethod

    异常

    -Exception

    示例:SocketException

    x

    -EventArgs

    示例:DoWhereEventArgs

    事件委托

    -EventHandler

    示例:DoWhereEventHandler

    特性

    -Attribute

    示例:DataNameAttribute

    泛型类型参数

    T-

    示例:TSession,TCurSession

    1. 窗体命名以Frm_###。

    ///<summary>

    ///添加人物窗口

    ///<summary>

    public class Frm_AddName

    {

    }

     

    1. 常量必须由大写字母组成,有二个以上单词的以下划线分开。

    如:

    DATA_TEMPLATE_NAME = ”数据模板名字”;

    五、  异常处理规范

    1. 异常处理时catch模块必须添加日志记录否则应加对应的注释说明不需要日志的原因。并避免直接使用Exception日志类型为Error类型
    2. 关键代码记录日志为Information 类型。

    try

    {
    }

    catch

    {

    //字符串转数字检查,不需要记录日志。

    }

    try

    {

    Log.Information(“程序已正常完成”);
    }

    catch(ArgumentNullException ex)

    {

        Log.Error(ex);

    }

    六、  性能规范

    1. 方法返回类型不应该为Object类型。
    2. 字符串比较时不要使用ToLower或者ToUpper string 比较建议使用string.Compare 或者Equals。

    例:应将if(str.Tostring().Tolower()==str1.Tostring().Tolower())

    改成

    if(string.Compare(str,str1,false).Equase(0))

    或者

    str.Equase(str1, StringComparison.CurrentCultureIgnoreCase)

    字符串为空判断时使用string. IsNullOrEmpty。

    例:应将:if(str==string.Empty|| str == null) 或if(str==””)

        改成:if(string.IsNullOrEmpty(str))

    1. 使用StringBuilder 代替“+”进行字符串串联。

    例:

      应将:

    String _str = “123”;

    For(int i=0 i<10000;i++)

    {

    Str+=str;

    }

    改成

    StringBuilder _strBuilder = new StringBuilder(“123”);

    For(int i=0 i<10000;i++)

    {

       _strBuilder.Append(“123”);

    }

    1. 考虑使用string.Format()方法而不是字符串拼接来输出结果。
    2. 检测空字符串用string.IsNullOrEmpty

    七、  设计规范

    1. 一个方法体内代码行数不应超过100行
    2. 方法体内的功能最好单一化
    3. 一个方法体内不能有太多的If…else…操作。一个方法体内不能超过三个if else 的条件判断超出部分应进行方法提炼。

    例如:

       应该避免

    If(a)

    {

    If(c)

    {

    If(d)

      {

    If(e)

    {

    }

      }

    Else

    {

    }

    }

    }

    1. 避免手动的增加空格以及TAB键。

    VS调整格式请用通用的CTRL+E+D;

    1. 避免在代码中写入常数字符串,应该有通用的常数定义类来专门定义。

    例如:

      应将

    If(A.Equase(“strValue”))

    {

       _strValue=”strValue”;

    }

     

    改成:

     

    private const string CONT_NAME_VALUE = “strValue”;

    If(A.Equase(CONT_NAME_VALUE))

    {

       _strValue= CONT_NAME_VALUE

    }

    1. 使用查询表达式代替循环var q = foos.Where(x => x > 100);
    2. 对象初始化Button btn = new Button { Text = "Click me!", BackColor = Color.FromArgb(255, 255, 255) };
    3. 尽可能只用系统定义的委托,而不是自己定义委托类型。系统定义的委托包括:各种泛型参数数目的Func, Action; 一个Predicate<T>;各种EventHandler。
    4. 在任何时候都应避免使用ref/out传递参数,尤其对引用类型(禁止引用的引用)。尝试改进你的设计。
    5. 当函数需要返回多个值时,应当使用元组而不是使用输出参数。.NET 4.0中提供了Tuple泛型类,位于System命名空间。
    6. 空字符串写成string.Empty

     

  • 相关阅读:
    WebBrowser获取完整COOKIE
    验证码
    fee photo
    net reactor加密源码保软件安全-net reactor使用教程
    C#支付宝多次回调问题
    C# 获取程序运行目录
    2DToolkit官方文档中文版打地鼠教程
    Unity开发Oculus游戏
    游戏Demo(持续更新中...)
    使用Slua框架开发Unity项目的重要步骤
  • 原文地址:https://www.cnblogs.com/yclnet/p/3421998.html
Copyright © 2011-2022 走看看