一、代码注释
并不是所有的代码均需要注释。
1、类头部注释
/// <summary> /// 描述类的用途 /// 作者: 张三 /// 日期: 2015/12/1 /// </summary> public class MyClass{...}
2、方法头部注释
/// <summary> /// 描述方法的用途 /// </summary> /// <param name=”param1”>参数的用途</param>... /// <returns>返回的结果</returns> public void MyMethod(){……}
3、代码行注释
public void FooMethod(){ var t = 0; //局部变量注释,可写在行末 //块注释, 写在代码行的上一行,单独一行或多行 if(t > 0){ Console.PrintLine("xxx"); } }
4、类属性注释
/// <summary> /// 描述属性含义与用途 /// </summary> private string helloStr;
二、命名规则
1、基本约定
- 要使用可以准确说明变量/字段/类的完整的英文描述符,如vehicleNumber。
- 要尽量采用项目所涉及领域的术语。
- 要采用大小写混合,提高名字的可读性。
- 驼峰表示法:camelCasing
- Pascal表示法:PasalCasing
- 避免使用缩写,如果一定要使用,就谨慎使用。
- 对常见缩略词,两个字母的缩写要采用统一大小写的方式(示例:ioStream, getIOStream);多字母缩写采用首字母大写,其他字母小写的方式(示例:getHtmlTag)
- 避免使用长名字(最好不超过 15 个字母)。
- 避免使用相似或者仅在大小写上有区别的名字。
标识符 | 大小写 | 示例 | 说明 |
命名空间 | Pascal | namespace Com.Techstar.ProductionCenter |
程序集、DLL和命名空间(name space)命名,一般情况下建议命名空间和目录结构相同。命名方式: 命名空间(name space): 公司名+产品名+模块名,如:Srx.WeChatOA.Login, 表示三人行公司的微信OA项目的登录模块 |
类 | Pascal | public class DevsList |
public class List<T> public class MyClass<Tsession>
|
接口 | Pascal | public interface ITableModel | |
方法 | Pascal | public void UpdateData() |
|
属性 | Pascal | Public int Length{…} | |
事件 | Pascal | public event EventHandler Changed; | |
枚举值 | Pascal | FileMode{Append} | |
参数 | Camel | public void UpdateData(string fieldName) | |
私有字段 | Camel | private string fieldName; | 按照使用范围来分,我们代码中的变量的基本上有以下几种类型,类的公有变量;类的私有变量(受保护同公有);方法的参数变量;方法内部使 用的局部变量。
Button btnSubmit;//提交按钮 |
非私有字段 | Pascal | public string FieldName; | |
局部变量 | Camel | string fieldName; |
三、其他规范
1. 变量声明, 请不要把多个变量声明写在一行中,即一行只声明一个变量。
例如:
String strTest1, strTest2;
应写成:
String strTest1;
String strTest2;
2. 避免方法中有超过5个参数的情况,一般以2,3个为宜,最多8个。如果超过了,则应使用struct来传递多个参数。
避免写超大类, 类的代码行尽量控制在千行以内, 300到500行为最佳. 绝对不允许出现5000行以上的超大类.
四、错误处理
1. 不要“捕捉了异常却什么也不做“。如果隐藏了一个异常,你将永远不知道异常到底发生了没有。
2. 发生异常时,给出友好的消息给用户,但要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。
3. 只捕捉特定的异常,而不是一般的异常。
五、建议
1. 一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。
2. 使用C#的特有类型,而不是System命名空间中定义的别名类型。
3. 别在程序中使用固定数值,用常量代替。
4. 避免使用很多成员变量。声明局部变量,并传递给方法。不要在方法间共享成员变量。如果在几个方法间共享一个成员变量,那就很难知道是哪个方法
在什么时候修改了它的值。
5. 不在代码中使用具体的路径和驱动器名。 使用相对路径,并使路径可编程。
6. 应用程序启动时作些“自检”并确保所需文件和附件在指定的位置。必要时检查数据库连接。出现任何问题给用户一个友好的提示。
7. 如果需要的配置文件找不到,应用程序需能自己创建使用默认值的一份。
8. 如果在配置文件中发现错误值,应用程序要抛出错误,给出提示消息告诉用户正确值。
9. DataColumn取其列时要用字段名,不要用索引号。例:
正确:DataColumn[“Name”]
不好:DataColumn[0]
10. 在一个类中,字段定义全部统一放在class的头部、所有方法或属性的前面。
11. 在一个类中,所有的属性全部定义在一个属性块中: