.Net编码规范整理(一)

  • A+
所属分类:.NET技术
摘要

  此处只是整理并记录下.Net开发规范以便加深编码规范。自己编码一直都是随心所欲,特别是在Java和C#之间来回切换,导致命名也乱七八糟完全没有规范可言。一个良好的编程规范可以提升程序员的开发效率、提高程序的易读性、提高代码的可维护性等,本文分两部分:通用规范、.Net开发规范。


前言

  此处只是整理并记录下.Net开发规范以便加深编码规范。自己编码一直都是随心所欲,特别是在Java和C#之间来回切换,导致命名也乱七八糟完全没有规范可言。一个良好的编程规范可以提升程序员的开发效率、提高程序的易读性、提高代码的可维护性等,本文分两部分:通用规范、.Net开发规范。

 

通用编程规范    

  1. 明确性和一致性

一定要要确保代码的明确性、易读性尽量保证清晰简洁,如函数的命名及该有的注释必须要有,让别人一看函数就知道该函数是干什么用的。

    .Net编码规范整理(一)

 

  2. 库的使用

删除不需要的库引用。

.Net编码规范整理(一)

 

  3. 尽量少用全局

    尽量少用全局变量,如果要用只读不修改影响不大,但涉及变量的修改就一定要检查变量更改对其它地方的影响,在VS中用“查找所有引用”核查所有用到的代码。

    .Net编码规范整理(一)

  

  4. 变量申明和初始化

    1. 在变量申明时进行初始化;
    2. 一定在最小作用域内申明它,一般申明于作用域顶端;
    3. 变量初始化置于同一行,推荐每行只包含一句申明;

    .Net编码规范整理(一)

 

  5. 函数申明和调用

    1. 函数名称,返回值,参数原则置于同一行;
    2. 过多参数一个参数一行(推荐);
    3. 多个输入参数时建议对输入参数进行排序;
    4. 当存在多个重构函数时,扩展参数因往后追加;
    5. 当存在输出参数时候,输出参数放末尾或开头;    
 1         static void Main(string[] args)  2         {  3             string logMsg = null;  4             string erroMsg = null;  5             string userName = "zhangsan";  6             string userPwd = "123456";  7   8             //如果参数较少,可放置一行调用  9             string result = DoSomeFunctionCall(userName, userPwd, false, out logMsg, out erroMsg); 10  11             //如果参数较多情况下,可用如下方式进行调用 12             string result2 = DoSomeFunctionCall( 13                 userName,  14                 userPwd,  15                 false, 16                 out logMsg, 17                 out erroMsg); 18  19             Console.WriteLine($"result={result}, result2={result2}"); 20         } 21  22         /// <summary> 23         /// 示例函数描述信息 24         /// </summary> 25         /// <param name="userName">用户名</param> 26         /// <param name="userPwd">用户密码</param> 27         /// <param name="isRememberPwd">是否记住密码</param> 28         /// <param name="logMsg">日志信息</param> 29         /// <param name="errorMsg">错误信息</param> 30         private static string DoSomeFunctionCall( 31             string userName,    32             string userPwd,  33             bool isRememberPwd, 34             out string logMsg,  35             out string errorMsg) { 36  37             logMsg = null; 38             errorMsg = null; 39  40             //Do Something 41  42             return "some result"; 43         }

 

  6. 枚举

    将代表某些值集合的强类型参数,属性和返回值声明为枚举类型。

 

  7. 空格

    空行:适度增加空行来增加代码的可读性;

    空格:可使用VS回车自动格式化了;

 

  8. 注释

    注释最好简洁明了,一定不要过多的冗余注释,一般注释包括:文件头注释、函数注释、多行注释、单行注释、内联注释、代码快注释。

/*     文件头注释:描述整个类的主要用途,如此类主要用于测试使用。  */ using System; using System.ServiceProcess; using System.Threading;  namespace StartServices {     class Program     {         /// <summary>         /// 函数注释:控制台函数入口         /// </summary>         /// <param name="args"></param>         static void Main(string[] args)         {             string logMsg = null;             string erroMsg = null;             string userName = "zhangsan";             string userPwd = "123456";              //单行注释:如果参数较少,可放置一行调用             string result = DoSomeFunctionCall(userName, userPwd, false, out logMsg, out erroMsg);              /*              * 多行注释:              * 如果参数较多情况下,可用如下方式进行调用              */             string result2 = DoSomeFunctionCall(                 userName,       //内联注释:用户名                 userPwd,        //密码                 false,          //是否记住密码                 out logMsg,     //日志信息输出                 out erroMsg);   //错误信息输出              #region 代码块注释:控制台数据输出             Console.WriteLine($"result={result}, result2={result2}");             Console.WriteLine($"result={result}, result2={result2}");             Console.WriteLine($"result={result}, result2={result2}");             Console.WriteLine($"result={result}, result2={result2}");             Console.WriteLine($"result={result}, result2={result2}");             Console.WriteLine($"result={result}, result2={result2}");             #endregion         }          /// <summary>         /// 示例函数描述信息         /// </summary>         /// <param name="userName">用户名</param>         /// <param name="userPwd">用户密码</param>         /// <param name="isRememberPwd">是否记住密码</param>         /// <param name="logMsg">日志信息</param>         /// <param name="errorMsg">错误信息</param>         private static string DoSomeFunctionCall(             string userName,             string userPwd,             bool isRememberPwd,             out string logMsg,             out string errorMsg) {              logMsg = null;             errorMsg = null;              //Do Something              return "some result";         }     } }