收藏 分销(赏)

C_开发规范.doc

上传人:xrp****65 文档编号:7669141 上传时间:2025-01-11 格式:DOC 页数:13 大小:881KB
下载 相关 举报
C_开发规范.doc_第1页
第1页 / 共13页
C_开发规范.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述
C#开发规范 易泓管理咨询开发参考文档 文档准备人: 张炜 制作日期: 2010年01月08日 提交日期: 2010年01月08日 版本号: V1.0 状态: 易泓管理咨询 浙江省杭州市滨江区江陵路1760号 邮编:310051 ®易泓公司 & Geely 版权所有 本文档特为上海易泓企业管理咨询有限公司软件开发制作 Creating Customer Values 为客户创造价值 文档描述 文件名 状态 C#开发规范 未评审 变更记录 日期 作者 版本 描述 2010-01-08 张炜 V1.0 审阅 审阅者 审阅时间 注释 目录 1. 简介 5 1.1. 目的 5 1.2. 范围 5 1.3. 引用、参考 5 2. 代码组织与风格 5 2.1. TAB 5 2.2. 空行 5 2.3. 代码块长度 6 2.4. “{”,“}” 6 2.5. 行宽 6 2.6. 空格 6 3. 注释 6 3.1. 注释的基本约定 6 3.1.1 注释的基本约定 6 3.1.2 注释应该增加代码的清晰度 6 3.1.3 保持注释的简洁,不是任何代码都需要注释的,过多的注释反而会影响代码的可读性 6 3.1.4 注释不应该包括其他的特殊字符 6 3.1.5 先写注释,后写代码 6 3.2. 注释类型 7 3.2.1 块注释 7 3.2.2 行注释 7 3.2.3 尾随注释 7 3.2.4 行尾注释 7 3.2.5 文档注释 7 3.3. 注释那些部分 7 4. 命名 9 4.1. 命名的基本约定 9 4.2. 标示符的命名约定 9 5. 声明 10 6. 表达式和语句 11 7. 错误处理和异常事件 12 8. 可移植性 12 1. 简介 1.1. 目的 本规范为一套编写高效可靠的C# 代码的标准、约定和指南。它以安全可靠的软件工程原则为基础,使代码易于理解、维护和增强,提高生产效率。同时,将带来更大的一致性,使软件开发团队的效率明显提高。 1.2. 范围 本规范应用于采用C#规范的项目中,所有项目中的C#代码(含ASPX)均应遵守这个规范。同时,也可作为其它项目的参考。 1.3. 引用、参考 参考了《JAVA开发规范》 2. 代码组织与风格 2.1. TAB 一个Tab为4个空格长。 2.2. 空行 适当的增加空行,来增加代码的可读性。 在下列情况下应该有两行空行: l 同一文件的不同部分之间; l 在类,接口以及彼此之间; 在下列情况之间应该有一行空行: l 方法之间; l 局部变量和它后边的语句之间; l 方法内的功能逻辑部分之间; 2.3. 代码块长度 每个代码块尽量控制在1个屏幕之内,方便浏览。 2.4. “{”,“}” 开括号“{”放在块的所有者所在行的最后面,闭括号“}”单独放在代码块的最后一行。 2.5. 行宽 每行代码和注释不应超过70个字节或屏幕的宽度,如超过则应换行,换行后的代码应该缩进8个字符。 2.6. 空格 括号和它里面的字符之间不应该出现空格。括号应该和它前边的关键词留有空格,如:while (true) {}; 但是方法名和左括号之间不应该有空格。 参数之间的逗号后应该加一空格。如:method1(int i1, int i2) for语句里的表达式之间加一空格。如:for(expr1; expr2; expr3) 二元操作符和操作数之间应该用空格隔开。如:i + c ; 强制类型转换时,在类型和变量之间加一空格。如:(int) i ; 3. 注释 3.1. 注释的基本约定 3.1.1 注释的基本约定 3.1.2 注释应该增加代码的清晰度 3.1.3 保持注释的简洁,不是任何代码都需要注释的,过多的注释反而会影响代码的可读性 3.1.4 注释不应该包括其他的特殊字符 3.1.5 先写注释,后写代码 3.2. 注释类型 3.2.1 块注释 块注释:主要用来描述文件,类,方法,算法等。一般用在文档和方法的前面,也可以放在文档的任何地方。以‘/*’开头,‘*/’结尾。例: …… /* * 注释 */ …… 3.2.2 行注释 行注释:主要用在方法内部,对代码,变量,流程等进行说明。与块注释格式相似,但是整个注释占据一行。例: …… /* 注释 */ …… 3.2.3 尾随注释 尾随注释:与行注释功能相似,放在代码的同行,但是要与代码之间有足够的空间,便于分清。例: int m=4 ; /* 注释 */ 如果一个程序块内有多个尾随注释,每个注释的缩进应该保持一致。 3.2.4 行尾注释 行尾注释:与行注释功能相似,放在每行的最后,或者占据一行。以‘//’开头或以‘///’开头。 3.2.5 文档注释 文档注释:与块注释相似,但是可以被javadoc处理,生成HTML文件。以‘/**’开头,‘*/’结尾。问挡住是不能放在方法或程序块内。例: /** 注释 */ 3.3. 注释那些部分 项目 注释哪些部分 实参/ 参数 参数类型 参数用来做什么 任何约束或前提条件 示例 字段/ 字段/属性 字段描述 注释所有使用的不变量 示例 并行事件 可见性决策 类 类的目的 已知的问题 类的开发/维护历史 注释出采用的不变量 并行策略 编译单元 每一个类/类内定义的接口,含简单的说明 文件名和/或标识信息 版权信息 接口 目的 它应如何被使用以及如何不被使用 局部变量 用处/目的 成员函数注释 成员函数做什么以及它为什么做这个 哪些参数必须传递给一个成员函数 成员函数返回什么 已知的问题 任何由某个成员函数抛出的异常 可见性决策 成员函数是如何改变对象的 包含任何修改代码的历史 如何在适当情况下调用成员函数的例子适用的前提条件和 后置条件 成员函数内部注释 控制结构 代码做了些什么以及为什么这样做 局部变量 难或复杂的代码 处理顺序 4. 命名 4.1. 命名的基本约定 4.1.1 一般应该使用可以准确说明变量/字段/类/命令空间的完整的英文描述符,如firstName。对一些作用显而易见的变量可以采用简单的命名,如在循环里的递增(减)变量就可以被命名为 ” i ”。 4.1.2 尽量采用项目所涉及领域的术语。 4.1.3可以采用大小写混合,提高名字的可读性。 4.1.4尽量少用缩写,但如果一定要使用,就要谨慎地使用。同时,应该保留一个标准缩写的列表,并且在使用时保持一致。 4.1.5避免使用长名字(最好不超过 15 个字母)。 4.1.6避免使用相似或者仅在大小写上有区别的名字。 4.1.7避免使用下划线作为名字的首末字母。 4.2. 标示符的命名约定 标示符类型 命名约定 例子 命令空间 (文件名)namespace l 全部小写。 l 标识符用点号分隔开来。为了使包的名字更易读,建议命令空间中的标识符用点号来分隔。 局部包: interface.screens 类,接口 l 类的名字应该使用名词。 l 每个单词第一个字母应该大写。 l 避免使用单词的错写,除非它的缩写已经广为人知,如HTTP。 Class Hello ; Class HelloWorld ; Interface Apple ; 方法 l 第一个单词一般是动词。 l 第一个字母是小些,但是中间单词的第一个字母是大写。 l 如果方法返回一个成员变量的值,方法名一般为get+成员变量名,如若返回的值是bool变量,一般以is作为前缀。 l 如果方法修改一个成员变量的值,方法名一般为:set + 成员变量名。 l 如果方法返回一个结束结束集或字符串,方法名一般为:do+成员变量名. getName(); setName(); isFirst(); doAddressSearch(); 变量 l 第一个字母小写,中间单词的第一个字母大写。 l 不要用_或&作为第一个字母。 l 尽量使用短而且具有意义的单词。 l 单字符的变量名一般只用于生命期非常短暂的变量。i,j,k,m,n一般用于integers;c,d,e一般用于characters。 l 如果变量是集合,则变量名应用复数。 l 命名组件采用匈牙利命名法,所有前缀均应遵循同一个组件名称缩写列表。 String myName; int i; int n; char c; int[] students; btNew; (bt是Button的缩写) 常量 l 所有常量名均全部大写,单词间以‘_’隔开。 int MAX_NUM; 5. 声明 5.1 每行应该只有一个声明。 5.2 局部变量必须初始化。 5.3 除了for循环外,声明应该放在块的最开始部分。for循环中的变量声明可以放在for语句中。如:for(int i=0;i<10;i++) 。 5.4 避免块内部的变量与它外部的变量名相同。 6. 表达式和语句 6.1 每行应该只有一条语句。 6.2 if-else,if-elseif语句,任何情况下,都应该有“{”,“}”; 6.3 循环语句使用在数组数据或数据集判断时,考虑使用foreach,如: foreach (LoginInfo loginInfo in loginInfos) 其他地方考虑为FOR 或WHILE for 循环的语法 for (expr1; expr2; expr3) { // statements; } foreach 循环的语法 foreach (string s in arr) { // statements; } while 和 do...while 循环的语法 while (condition) { // statements } do { // statements } while(condition); 6.4 switch语句,每个switch里都应包含default子语句,格式如下: switch (condition) { case ABC: statements; break; case DEF: statements; break; case XYZ: statements; break; default: statements; break; } 6.5 try-catch语句格式如下: try { statements; } catch (ExceptionClass e) { statements; } finally { statements; } 7. 错误处理和异常事件 不要“捕捉了异常却什么也不做”。如果隐藏了一个异常,你将永远不知道异常到底发生了没有。 发生异常时,给出友好的消息给用户,但要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。 别写太大的 try-catch 模块。如果需要,为每个执行的任务编写单独的 try-catch 模块。 这将帮你找出哪一段代码产生异常,并给用户发出特定的错误消息 如果应用程序需要,可以编写自己的异常类。自定义异常不应从基类SystemException派生,而要继承于. IApplicationException。 8. 可移植性 8.1 尽量不要使用已经被标为不赞成使用的类或方法。 8.2 对于声明与后台对接的数据表类,必须进行序列号,在类文件中需加入[Serializable]关键字,如 namespace geelyqns { [Serializable] public class ClassName { // } } 内部参考文件 C#开发规范 Last printed 1月/05/2025 | Page 13 of 13
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服