《程序员编码规范》由会员分享,可在线阅读,更多相关《程序员编码规范(28页珍藏版)》请在金锄头文库上搜索。
1、程序员编码规范目 录1.导言1.1 目的1.2 范围1.3 缩写说明1.4 术语定义1.5 引用标准1.6 参考资料1.7 版本更新信息2. 编码格式规范3.命名规范3. 1 命名的基本约定3. 2 各种标示符类型的命名约定3. 3 组件名称缩写列表4声明规范4.1 变量声明4.2 代码缩进4.3 空白5语句规范6.注释规范6. 1 注释的方法6. 2 开头注释6. 3 类和接口的注释1. 导言1.1 目的该文档的目的是描述网上招聘系统项目的编码规范和对代码的说明,其主要内容包括: 编码规范 命名规范 注释规范 语句规范 声明规范 目录设置 代码说明本文档的预期的读者是: 开发人员 项目管理人
2、员 质量保证人员1.2 范围该文档定义了本项目的代码编写规范,以及部分代码描述和所有代码的说明。1.3 缩写说明AspxAspx 是 Active Server Pages XML 的缩写。1.4 术语定义ClassC#程序的单元。Packages 由很多的类组成的工作包。1.5 引用标准1 企业文档格式标准 北京长江软件有限公司 1.6 参考资料书名:系统分析设计技术 作者:张友生C#程序设计2. 编码格式规范1代码书写格式(1)所有的缩进 TAB 键为 4 个空格,每个单词的首字符大写,其余小写。 (2)在代码中垂直对齐左括号和右括号。例:if(x=0) Response.Write(用户
3、名必须输入!);不允许以下情况:if(x=0)Response.Write(用户名必须输入!);或者if(x=0)Response.Write(用户名必须输入!);(3)在大多数运算符之前和之后使用空格,这样做时不会改变代码的的意图却可以使代码容易阅读。例:int j = i + k;而不应写为:int j=i+k;(4)缩写 SQL 语句时,对于关键字使用全部大写,对于数据库元素(如表,列和视图)使用大小写混合) 。(5)将每个主要的 SQL 子句放在不同的行上,这样更容易阅读和编辑语句。2.注释的写法(1)在你劳神的地方请加上详细的注释说明,除了最简单的存取成员变量的 Set/Get 成员
4、函数之外,其余大部分的函数写上注释是良好的习惯,尽量使你的程序让别人很容易看懂。(2)大多的注释会使很难看,但一些复杂的算法和数据结构和数据结构处还是要加上注释的,这样别人就容易看懂,否则时间长了,你自己都未必卸载明白了。(3)如果是对某一段程序(算法/结构)的注释,在程序头直接用/再空一格进行说明,一行不要超过 80 个字符。(4)为了防止在阅读代码时不得不左右流动源代码编辑器,每行代码或注释在不得超过一显示屏。(5)使用连续的多个 /表示注释行(不要超过 80 字符) 。(6)文件头部应有注释,简单描述文件的内容(7 )对于程序中的比较关键的算法和函数,必须加注释。3cs 文件的书写(1)
5、各个部分应使用注释行和空行分割,并在必要的地方写上注释。(2)函数之间用注释各空行分割。中间的内容缩进一个 TAB 三.其他 1.变量(1)float 和 bool 禁止用=判断.bool 应该用逻辑运算关系符 ,而 float 应该用差值区间来判断相等 ;(2)类型转换一律用显示类型转换(3)类型的长度一律用 sizeof()获得;(4)当声明一个变量时,务必要自已初始化一下变量;2.函数(1)功能单一,函数名要名符其实.(2)要易懂,实现时要根过分追求技巧,优化放到后面去做.(3)长度一般禁止超过 200 行.(4)要检查输入值是否合法,实现(成员)函数时务必要求输入参数是在要求范围之内,
6、尤其你定义的(成员)函数给别人调用时,要判断其合法性.(5)调用函数时要严格按照接口规范调用,调用后要判断执行情况,并做适当的错误处理(尔后会给出错误和异常处理规范)(6)尽量避免整块复制代码段,如果出现这样的情况要分析原因,如果这段代码完成独立的功能,应考虑使用函数,否则,应考虑使用宏定义, 否则因为修改引起的不一致往往是错误的根源.(7)除极其简单的函数外,其他的函数在稿处必须加上 FMAT_TARCE(),参见错误异常处理规范.(8)函数的出口尽量唯一,最好在出口处加上 FMAT_TRCE();(9)写代码时,尽量减少堆的分配次数,能使用 Stack 的尽量使用 Stack(10)函数编
7、写必须精练, 消除冗余的代码 ,删除不用的变量(11)if/while 等语句中和条件表达式的运算结果必须为显示的 Bool 量(12)禁止使用 goto 语句附:标识符 大小写方式 示例 标识符大小写规则 标识符 大小写 示例 类 Pascal AppDomain 枚举类型 Pascal ErrorLevel 枚举值 Pascal FataError 事件 Pascal ValueChanged 异常类 Pascal WebException 只读的静态字段 Pascal ReadValue 接口 Pascal IDisposable 方法 Pascal ToString 命名空间 Pasc
8、al System.Drawing 属性 Pascal BackColor 参数 Camel typeName3.命名规范 3.1 命名的基本约定1 要使用可以准确说明变量/字段/类的完整的英文描述符,如 firstName。对一些作用显而易见的变量可以采用简单的命名,如在循环里的递增(减)变量就可以 被命名为 “i”。2 要尽量采用项目所涉及领域的术语。3 要采用大小写混合,提高名字的可读性。为区分一个标识符中的多个单词,把标识符中的每个单词的首字母大写。不采用下划线作分隔字符的写法。有两种适合的书写方法,适应于不同类型的标识符:PasalCasing: 标识符的第一个单词的字母大写;cam
9、elCasing:标识符的第一个单词的字母小写。4 下表描述了不同类型标识符的大小写规则:标识符 大小写 示例命名空间 Pascal namespace Com.Techstar.ProductionCenter类型 Pascal public class DevsList接口 Pascal public interface ITableModel方法 Pascal public void UpdateData()属性 Pascal Public int Length事件 Pascal public event EventHandler Changed;私有字段 Camel private s
10、tring fieldName;非私有字段 Pascal public string FieldName;枚举值 Pascal FileModeAppend参数 Camel public void UpdateData(string fieldName)局部变量 Camel string fieldName;5 避免使用缩写,如果一定要使用,就谨慎使用。同时,应该保留一个标准缩写的列表,并且在使用时保持一致。6 对常见缩略词,两个字母的缩写要采用统一大小写的方式(示例:ioStream , getIOStream);多字母缩写采用首字母大写,其他字母小写的方式(示例: getHtmlTag);
11、7 避免使用长名字(最好不超过 15 个字母)。8 避免使用相似或者仅在大小写上有区别的名字。3.2 各种标示符类型的命名约定1 程序集命名实验室名称(Lab)+ 项目名称 + 模块名称(可选),例如:中心服务器程序集:Lab.SeverCenter;中心服务器业务逻辑程序集:Lab.SeverCenter.Business ;2 命名空间命名采用和程序集命名相同的方式:实验室名称(Lab)+ 项目名称 + 模块名称。 另外,一般情况下建议命名空间和目录结构相同。例如:中心服务器:Lab.SeverCenter;中心服务器下的用户控件:Lab.SeverCenter.UserControl;中
12、心服务器业务逻辑:Lab.SeverCenter.Business ;中心服务器数据访问:Lab.SeverCenter.Data;3 程序集和 DLLl 大多数情况下,程序集包含全部或部分可重用库,且它包含在单个动态链接库(DLL) 中。l 一个程序集可拆分到多个 DLL 中,但这非常少见,在此准则中也没有说明。l 程序集和 DLL 是库的物理组织,而命名空间是逻辑组织,其构成应与程序集的组织无关。l 命名空间可以且经常跨越多个程序集。可以考虑如下模式命名 DLL:.dll例:Lab.SeverCenter.dll4 类和接口命名l 类的名字要用名词;l 避免使用单词的缩写,除非它的缩写已经
13、广为人知,如 HTTP。l 接口的名字要以字母 I 开头。保证对接口的标准实现名字只相差一个“I”前缀,例如对IComponent 接口的标准实现为 Component;l 泛型类型参数的命名:命名要为 T 或者以 T 开头的描述性名字,例如:public class Listpublic class MyClassl 对同一项目的不同命名空间中的类,命名避免重复。避免引用时的冲突和混淆;5 方法命名l 第一个单词一般是动词;l 如果方法返回一个成员变量的值,方法名一般为 Get+成员变量名,如若返回的值 是bool 变量,一般以 Is 作为前缀。另外,如果必要,考虑用属性来替代方法;l 如果
14、方法修改一个成员变量的值,方法名一般为:Set + 成员变量名。同上,考虑 用属性来替代方法。6 变量命名l 按照使用范围来分,我们代码中的变量的基本上有以下几种类型,类的公有变量;类的私有变量(受保护同公有);方法的参数变量;方法内部使用的局部变量。这些变量的命名规则基本相同,见标识符大小写对照表。区别如下:a) 类的公有变量按通常的方式命名,无特殊要求;b) 类的私有变量采用两种方式均可:采用加“m”前缀,例如 mWorkerName;c) 方法的参数变量采用 camalString,例如 workerName;l 方法内部的局部变量采用 camalString,例如 workerName
15、。l 不要用_或& 作为第一个字母;l 尽量要使用短而且具有意义的单词;l 单字符的变量名一般只用于生命期非常短暂的变量:i,j,k,m,n 一般用于 integer;c,d,e 一般用于 characters;s 用于 stringl 如果变量是集合,则变量名要用复数。例如表格的行数,命名应为:RowsCount ;l 命名组件要采用匈牙利命名法,所有前缀均应遵循同一个组件名称缩写列表3.3 组件名称缩写列表缩写的基本原则是取组件类名各单词的第一个字母,如果只有一个单词,则去掉其中的元音,留下辅音。缩写全部为小写。组件类型 缩写 例子Label Lbl lblNoteTextBox Txt
16、txtNameButton Btn btnOKImageButton Ib ibOKLinkButton Lb lbJumpHyperLink Hl hlJumpDropDownList Ddl ddlListCheckBox Cb cbChoiceCheckBoxList Cbl cblGroupRadioButton Rb rbChoiceRadioButtonList Rbl rblGroupImage Img imgBeautyPanel Pnl pnlTreeTreeView Tv tvUnitWebComTable Wct wctBasicImageDateTimeInput Dti dtiStartComboBox Cb cbListMyImageB