DotNET编程规范
更新时间:2023-08-16 01:17:01 阅读量: 教学研究 文档下载
- dotnet环境编程推荐度:
- 相关推荐
DotNET编程规范
C#.NET编程规范
——修订版
(请使用 Office 2003 来阅读本文档,以获得最佳效果)
我们应该知道规范对于系统的生命周期多么重要,试想如果每个程序员写的程序其他人都难以阅读,最后只能由他本人去维护、修改的话,软件开发将是什么样的噩梦。
MS为大家提供了FXCop工具,它用于自动检查代码的规范性、安全性甚至效率,所以,本文将围绕MS提供的C#.NET代码规范展开,以利于使用FXCop来自动校验我们的代码。
我以前曾经发布过《.NET编程规范个人总结》,但该文与FXCop的检测有相当的出入,所以我修改了该文,为此我深表歉意。
1、命名约定
Pascal和Camel命名约定
编程的命名方式主要有Pascal和Camel两种(Pascal:每个单词的首字母大写,例如ProductType。Camel:首个单词的首字母小写,其余单词的首字母大写,例如productType)。
1.1、局部变量命名
在primitive的局部变量命名时,使用Camel命名规则,
比如:int type = 0;
double count = 0; …
对于string类型定义,通常使用str前缀+Pascal命名的方式,
DotNET编程规范
比如string strSQL = string.Empty; 这是一种典型的命名SQL语句字符串的方式
而对于此外的类型对象定义,通常的做法是使用obj前缀+Pascal命名的方式,来告知我们这个变量是一个对象
比如:Application obj Application = new Application();
1.2、参数命名
Camel命名规则,首字母小写
1.3、类数据成员/属性命名
数据成员命名以m开头+Pascal命名方式; 属性以Pascal命名 比如
class EQAppcalition { private ArrayList mWorksheetCollection = new ArrayList();
public ArrayList WorksheetCollection { get { return this.mWorksheetCollection; } } }
另外,在类的内部调用时,我们应该尽量加上this限定符,this在编辑环境中是蓝色的,更利于我们区分局部变量、参数或静态变量
1.4、命名空间命名
在.之间的限定字符串符合Pascal格式
1.5、委托缩写
委托的命名方式我常常以Pascal命名,或者可以在前面加入On
比如public delegate void OnMouseUp (object sender, MouseEventArgs e);用于处理当Mouse Up时触发的委托
DotNET编程规范
1.6、自定义异常类
我建议自定义异常类以Exception结尾,
比如class EQException: Exception{…} 这是在我的ExcelQuicker控件中异常类的定义方式
1.7、枚举
枚举的命名是Pascal命名,不要像我在以前C++中命名时还在变量头加Enum,看上去挺别扭的。在枚举的使用当中,我们不应该对枚举进行类型转换,以前我最常发生的事情就是将枚举与INT类型转来转去,这样破坏了使用枚举enum的初衷
1.8、常量命名
以Const开头+Pascal命名,或者直接是Pascal命名方式
1.9、命名缩写
在一般情况下,我们都不要使用缩写命名,我们从来不害怕长的变量命名,而却担心看不懂的命名。变量命名的原则是,尽最大努力让其他人在看到我们的变量/函数/…等的第一时间,大概能猜出它是做什么的。
比如:int productTypeCount = 0; //我们在第一时间就能知道它是记录产品的数量的变量 而对于糟糕的命名方式:int pTC = 0; //它是productTypeCount的简写,但是其他人或者我们在长时间以后还能知道它是做什么的吗?也许我们不得不查阅相关文档或跟踪代码前后文以明白其意义。
*我们应该记住:最优秀的代码它本身就是注释。我们需要做的,并不在于当时潦草的去实现些什么,而是要让我们的代码具备让他人维护或今后扩充的能力。人需要美,代码也一样。
2、注释规范 2.1、文件头部注释
在代码文件的头部进行注释,标注出创始人、创始时间、修改人、修改时间、代码的功能,这在团队开发中必不可少,它们可以使后来维护/修改的同伴在遇到问题时,在第一时间知道他应该向谁去寻求帮助,并且知道这个文件经历了多少次迭代、经历了多少个程序员的手。 样本:
我们甚至可以在这段文件头注释中加入版权信息、文件名、版本信息等。
DotNET编程规范
2.2、函数、属性、类等注释
请使用///三斜线注释,这种注释是基于XML的,不仅能导出XML制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以protected,protected Internal,public声明的定义注释请都以这样命名方法。 例如:
/// <summary>
/// 用于从ERP系统中捞出产品信息的类 /// </summary>
class ProductTypeCollector { … }
2.3、逻辑点注释
在我们认为逻辑性较强的地方加入注释,说明这段程序的逻辑是怎样的,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除BUG。在注释中写明我们的逻辑思想,对照程序,判断程序是否符合我们的初衷,如果不是,则我们应该仔细思考耀修改的是注释还是程序了…
3、排版
我的排版原则与建议:
1、 每行语句至少占一行,如果语句过长(超过一屏),则该语句断为两行显示;
2、 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用
#region…#endregion,我最喜欢把机器生成的代码都放在一个#region里面,比如在编写程序时,对应自动产生的控件定义,我常用#region Automatic Generated Web Components … #endregion把他们框住
3、 使用空格,
(1) 目操作符的前后加空格(+, =, && 等) (2) 单目操作符前后不加空格(!, ++, ~ 等) (3) 逗号、分号只在后面加空格
4、 使用空行,在一段功能代码、或者函数、属性之间插入空行,这样会很直观。
DotNET编程规范
4、界面控件命名
我的建议是使用默认控件名作为前缀,并且首字母小写,符合Camel规范,这样的好处是不必为未知的控件统一命名方式发愁,比如对于Label标签控件,有的人用缩写lbl,有的人用lab,有的人用lb……
protected System.Web.UI.WebControls.Button buttonQuery;
protected System.Web.UI.WebControls.DropDownList dropDownListProductType; protected System.Web.UI.WebControls.TextBox textBoxManufactureDate;
5、命名
6、代码可读性建议
(1)注意运算符的优先级,我们应该尽量使用括号明确表达式的操作顺序,避免使用默认优先级,给我们以及维护人带来困扰
(2)避免使用不易理解的数字,用有意义的标识来替代(枚举和常量) 比如:
(3)代码中关系较为紧密的代码应尽可能相邻,比如使用,
DotNET编程规范
而不是objProductType. Name
(4)在界面层中尽量使用异常处理try语句,不要将错误的消息直接暴露给用户,而更应该的是把系统抛出的错误信息记录到LOG日志文件中去,告诉用户友好的提示信息
*我们应该牢记,优秀的代码并不是所有的人都看不明白,而应该是简单易懂、易于他人维护的代码。优秀的程序员写出的程序,往往都是清晰、明了的。
我们更应该记住,我们写的代码、程序不是仅仅给我们自己用、也不是仅仅由我们自己去维护、更新。
总结
以上是我写.NET以及编程两年来对规范性的一些总结、体会。如果有疏漏、错误的地方,谢谢大伙的补充、纠正。
正在阅读:
DotNET编程规范08-16
2018年湖北省孝感市中考数学试题及参考答案(word解析版)03-08
大功率LED封装技术及其发展05-11
06第四章糖代谢08-10
专题07---氧化性还原性强弱的判断05-11
abaqus常用技巧总结 - 图文04-04
A-Book-Report-of-the-Little-Prince小王子英文读后感讲课教案04-29
2015年下半年小学教师资格证《教育教学知识与能力》真题答案解析03-02
房屋租赁委托书范本08-22
供销社社有企业调研报告02-22
- 公务员上岸同学告诉你,怎样走出面试中常见的十大误区
- 作表率,我们怎么办(办公室主任)
- 乘务员安全责任书
- 增员面试流程
- 河南省焦作市规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 最新4社区工作者面试题
- 个人简历表
- 男教工体检必检项目
- 河南省兰考县规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 兼职译员测试稿
- 河南省开封市规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 永州职业技术学院校园总体规划-永州职业学院
- 最新5、培训科长笔试题(答案)
- 2019雅商酒店境外人员登记培训稀有资料,不可错过
- 小学教师求职简历范文
- 红酒知识与礼仪
- 春节给领导拜年的短信拜年词
- 2019年上半年中小学教师资格证结构化面试真题1
- 20XX年县干部培训工作目标
- 硬笔试听课
- 规范
- 编程
- DotNET
- 大学生学雷锋主题团日活动策划书
- 2012年国家公务员《公共基础知识》标准预测试卷(4)-中大网校
- 学生工程实习实训安全自律协议书
- 压力容器设计基础知识
- 俄语变格口诀
- 十二五规划农业啥目标
- 精益生产现场管理和改善(打印稿)
- 第二次作业
- 饭店法律实务第六章客人的权利义务
- 艺术品鉴赏与营销论文
- 公务员面试:无领导小组讨论考生角色定位系列篇之羊派
- 制药技术类专业实习总结范文
- 手术室对手术部位感染的预防和控制
- 成都市武侯区2009-2010学年七年级(上)期末数学模拟试题(含答案)
- 杨庙中心小学校园平整验收报告及经费决算
- 超声波焊接技术讲座
- 呼伦贝尔学院历史学教育专业(本科)教学大纲汇编
- GIS Office软件套土规图教程
- 趣味抢答题
- 第九章 小组的结束阶段