




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NET 交流二群 131628626 NET 交流一群 84010140 重庆普耀科技有限公司重庆普耀科技有限公司 卷号卷号 卷内编号卷内编号 密级密级 C 编码规范编码规范 Version 2 0 作者 汪卫星作者 汪卫星 普耀科技公司 2005 NET 交流二群 131628626 NET 交流一群 84010140 文档信息文档信息 标题 C 编码规范 作者 严博文 创建日期 2005 4 20 上次更新日期 2007 4 25 版本 3 0 部门名称 SEPG 修订文档历史记录修订文档历史记录 日期版本说明作者 2005 4 201 0创建严博文 2005 11 212 0将 4 最佳实践 重新规类汪卫星 2007 4 253 0李发陵 NET 交流二群 131628626 NET 交流一群 84010140 目目 录录 1 简介简介 1 1 1目的 1 1 2范围 1 1 3定义 首字母缩写词和缩略语 1 1 4参考资料 1 1 5概述 1 1 6原则 1 1 6 1便于阅读 1 1 6 2与工具集成 1 1 6 2 1 VISO 1 1 6 2 2 配置工具 2 1 6 2 3 编码工具 2 1 6 3便于调试 2 1 6 4便于写作 2 1 6 5减少重复 2 2 程序设计标准程序设计标准 2 2 1通用命名约定和风格 2 2 1 1采用该领域的术语 2 2 1 2大小写 2 2 1 3使用可以准确说明的英文描述符 2 2 1 4下划线的使用 2 2 1 5避免使用长名字 3 2 1 6标识符的命名 3 2 2通用格式编码规则 4 2 2 1圆括号规则 4 2 2 2缩进规则 4 2 2 3If Then Else 规则 5 2 2 4比较规则 5 2 2 5Case 规则 5 2 2 6对齐规则 5 2 2 7单语句规则 5 2 2 8单一功能规则 5 NET 交流二群 131628626 NET 交流一群 84010140 2 2 9简单功能规则 5 2 2 10明确条件规则 5 2 2 11选用 FALSE 规则 5 2 2 12独立赋值规则 6 2 2 13行宽 6 2 2 14折行 6 2 2 14 1 在分号处折行 6 2 2 14 2 在操作符前折行 6 2 2 14 3 有多个可以选择的地方时 选择层次较高的进行折行 6 2 2 14 4 将新行与上一行的同一级的表达式的开始处对齐 6 2 2 14 5 方法定义的折行 6 2 2 14 6 简单地缩进一级 6 2 3注释 7 2 3 1 概述 7 2 3 1C 注释语句类型 7 2 3 2按目的分的注释类型 9 2 3 2 1 业务逻辑注释 9 2 3 2 2 外部注释 9 2 3 2 3 变量注释 9 3 数据数据 9 3 1 程序字符数据 9 3 2 数据类型缩写表 10 3 3FORM控件缩写表 11 3 4COMPONENT 控件缩写表 12 3 5DATA 控件缩写表 12 3 6WEB 控件缩写表 13 3 7HTML控件缩写表 13 4 最佳实践最佳实践 14 4 1 类和对象问题 14 4 2 变量方法问题 14 4 3 注释问题 15 4 4 逻辑结构问题 15 4 5 代码问题 16 C 编程规范编程规范 v2 0 第 1 页 共 27 页 1 简介简介 本文提供一整套编写高效可靠的 C NET 代码的标准 约定和指南 它们以安全可靠的软件 工程原则为基础 使代码易于理解 维护和增强 而且 通过遵循这些程序设计标准 你作 为一个 C NET 软件开发者的生产效率会有显著提高 经验证明 若从一开始就花时间编 写高质量的代码 则在软件开发阶段 对代码的修改要容易很多 最后 遵循一套通用的程 序设计标准将带来更大的一致性 使软件开发团队的效率明显提高 1 1 目的目的 本文档用于指导编码 并确立起一个易于理解 维护 并同软件过程及过程工具紧密集成的 编码约定 1 2 范围范围 本文档对适用所有采用 C NET 和 NET 作为平台的开发语言开发的项目 1 3 定义 首字母缩写词和缩略语定义 首字母缩写词和缩略语 注释率 注释在代码中所占比例 语句 注释在源文件中 C 语言风格注释 行内注释 文档注释 1 4 参考资料参考资料 C coding standards 1 5 概述概述 本文档共分为六部分 第一部分为简介 第二部分程序设计准则 第四部分为描述与工具的集成 第五部分为本文档所规定的一些数据 第六部分为建议的最佳实践 1 6 原则原则 本节描述描述制作本文档时所采取的原则 这些原则是一开始就确定的 并且贯穿在整个文 档中 以下的原则的排列是按优先级进行的 这也就是说 在原则之间有冲突时 应该优先 C 编程规范编程规范 v2 0 第 2 页 共 27 页 考虑排在前面的项目 1 6 1便于阅读 从软件工程的角度上来看 代码让人更容易看懂远比让机器看懂更有价值得多 首先代码永 远不进行维护似乎是很少发生的 其次 就算代码永远不进行维护 至少为了代码重用的目 的也需要其他人能够很容易地看懂代码 这里有一条 30 秒原则 即其他程序员能在 30 秒内 完全读懂你的方法 理解做什么 为什么及怎样做的 1 6 2与工具集成 鉴于开发过程大量地集成了工具 因此要与整个开发过程结合就必须考虑怎样使代码与工具 和平相处并配合密切 与工具集成同时可以增加生产力 并减少由于人工转换过程中引入的 错误 1 6 2 1 VISO 考虑到整个开发过程使用了 RUP 因此与其所提供的工具 VISO 的集成是很有价值的 与 VISO 的集成是指保存在 VISO 中的设计模型可正向生成符合本规范的代码 也可从符合本 规范的代码中反向生成 VISO 的设计模型 1 6 2 2 配置工具 与配置工具的集成是指代码规范与配置工具的要求不冲突 1 6 2 3 编码工具 与编码工具的集成是指代码可用编码工具自动完成一部分内容 这也是提高生产力的一种努 力 1 6 3便于调试 便于调试是指在规范的约束下 应该不影响调试 1 6 4便于写作 这条原则是说明不要花时间去进行格式的编排 如将注释换一行书写 而不是花时间去调整 让注释右对齐 让实施员集中精力于该干的事 而诸如注释的好看与否等等则不应该是编码 人员关心的事 1 6 5减少重复 同样的一个信息不应该在多个地方出现 原则原则约定约定 便于阅读缩进 适当地增加括号 折行 C 编程规范编程规范 v2 0 第 3 页 共 27 页 行宽限制 与工具集成对 VISO 的注释支持 Visual C Studio 的模板文件及配置 便于调试一行一条语句 便于写作注释与语句不同行 减少重复同样的内容不在多处重复 1 6 6表格 1 原则及约定对应表 2 程序设计标准程序设计标准 2 1 通用命名约定和风格通用命名约定和风格 我们将在整个标准中讨论命名约定 所以让我们先讨论几个基本点 2 1 1采用该领域的术语 如果用户称他们的 客户 clients 为 顾客 customers 那么就采用术语 Customer 来命名这个类 而不用 Client 许多程序开发者会犯的一个错误是 不去使用工业或领域里 已经存在着很完美的术语时 却生造出一些普通词汇 2 1 2大小写 变量 常量的首字母小写 其它单词的首字母大字 如 用户名表示为 userName 方法的命名是将首全部单词的首字母大写 如 获取页面数据表示为 GetPageData 2 1 3使用可以准确说明的英文描述符 例如 采用类似 firstName grandTotal 或 CorporateCustomer 这样的名字 虽然象 x1 y1 或 fn 这样的名字很简短 输入起来容易 但是我们难以知道它们代表什么 结果 是什么含义 因而使代码难以理解 维护和改进 2 1 4下划线的使用 避免使用下划线作为名字的首末字母 以下划线为首末字母的名字通常为系统保留 除预处 理定义之外 一般不用作用户命名 更重要的是 下划线经常造成麻烦而且难输入 所以尽 量避免使用 因此建议下划线只用在常量的命名的单词中间作分隔符 2 1 5避免使用长名字 命名不要超过标识符最大字符数 255 个字符 超过 25 到 30 个字符的名称比较笨拙 标识符字符数请参见 3 数据一节 虽然 PhysicalOrVirtualProductOrService 看起来似乎是个不错的类名 但是这个名字太长 C 编程规范编程规范 v2 0 第 4 页 共 27 页 了 应该考虑重新给它起个短一点的名字 比如象 Offering 但是 超过 25 到 30 个字符的名称比较笨拙 此外 要想取一个有实际意义的名称 清楚 地表达变量或常量的用途 25 或 30 个字符应当足够了 2 1 6标识符的命名 标识符类型标识符类型命名规则命名规则Examples Classes 类名必须是词 大小写遵照前面 定义的大小写规则 即每个单词 首字母大写 类名应该简单清 晰 不要使用除通用的计算机缩 写或通用的领域缩写外的其它缩 写 a 名字应该能够标识事物的特性 b 名字尽量不使用缩写 除非它是 众所周知的 c 名字可以有两个或三个单词组成 但通常不应多于三个 d 在名字中 所有单词第一个字母 大写 例如 IsSuperUser 包含 ID 的 ID 全部大写 如 CustomerID e 使用名词或名词短语命名类 f 少用缩写 g 不要使用下划线字符 public class FileStream public class Button public class String Interfaces 和类命名规范相同 唯一区别是 接口在名字前加上 I 前缀 interface IDBCommand interface IButton Methods 方法应该是动词 或以动词开始 的动宾结构短语 大小写遵照前 面定义的大小写规则 Run RunFast GetBackground Variables 程序文件 cs 中的变 量命名 首字母小写 其它单词的首字母 大字 private string customerName private DateTime publishDate Constants常量名也应当有一定的意义 格private const int WEBPAGEDEFAULT 3600 C 编程规范编程规范 v2 0 第 5 页 共 27 页 标识符类型标识符类型命名规则命名规则Examples 式为 NOUN 或 NOUNVERB 常量名均为大写 private const bool WEBENABLESSLDEFAULT false NameSpace 和类命名规范相同 Exception 针对异常捕获过程中的 Exception 变量命名 统一命名为 err Try your code try code catch Exception err your code catch Exception err your code Control 界面元素命名的一条基本原则是 界面元素的命名应简单而不产生 混淆 各控件缩写请请参见 3 数据一节 DataGrid dgUserList Form frmMain 2 2 通用格式编码规则通用格式编码规则 一种提高代码可读性的方法是给代码分段 换句话说 就是在代码块内让代码缩进 所有在 括号 和 之内的代码 构成一个块 基本思想是 块内的代码都应统一地缩进去一个单位 2 2 1圆括号规则 不要把小括号和关键词 if while 等 紧贴在一起 要用空格隔开它们 不要把小括号和函数名紧贴在一起 除非必要 不要在 Return 返回语句中使用小括号 因为关键字不是函数 如果小括号紧贴着 函数名和关键字 二者很容易被看成是一体的 2 2 2缩进规则 同级之间在同一个缩进位置 C 编程规范编程规范 v2 0 第 6 页 共 27 页 下一级与上一级之间需要缩进 例如 function func if something bad if another thing bad while more input 每一级缩进空格数请参见 3 数据一节 2 2 3If Then Else 规则 如果你有用到 else if 语句的话 通常最好有一个 else 块以用于处理未处理到的其他情况 可 以的话放一个记录信息注释在 else 处 即使在 else 没有任何的动作 其格式为 if 条件 1 注释 else if 条件 2 注释 else 注释 注 if 和循环的嵌套最多允许 4 层 2 2 4比较规则 总是将恒量放在等号 不等号的左边 一个原因是假如你在等式中漏了一个等号 语法检查 器会为你报错 第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它 例如 if 6 errorNum C 编程规范编程规范 v2 0 第 7 页 共 27 页 2 2 5Case 规则 default case 总应该存在 如果不允许到达 则应该保证 若到达了就会触发一个错误 Case的选择条件最好使用 int 或 string 类型 2 2 6单语句规则 除非这些语句有很密切的联系 否则每行只写一个语句 2 2 7单一功能规则 原则上 一个程序单元 函数 例程 方法 只完成一项功能 2 2 8简单功能规则 原则上 一个程序单元的代码应该限制在一页内 25 30 行 2 2 9明确条件规则 不要采用缺省值测试非零值 例如 使用 if 0 f 而不用 if f 2 2 10 选用 FALSE 规则 大部分函数在错误时返回 FALSE 0 或 NO 之类的值 但在正确时返回值就不定了 不能用一 个固定的TRUE 1 或 YES 来代表 因此检测一个布尔值时应该用 FALSE 0 NO 之类的 不等式来代替 例如 使用 if FALSE f 而不用 if TRUE f 2 2 11 独立赋值规则 嵌入式赋值不利于理解程序 同时可能回造成意想不到的副作用 应尽量编写独立的赋值语句 例如 使用 a b c e a d 而不用 e a b c d 2 2 12 行宽 行宽不得超过最大行宽 超过最大行宽就需要折行 最大行宽请参见 3 数据一节 原理 行宽超过最大行宽往往需要用横向滚动条 影响阅读 而最大行宽之内的字符数 在大多数阅读器中均能方便地进行阅读及打印 2 2 13 折行 当一行装不下内容时 需要对这些内容进行折行 折行时遵守以下规则 当一行装不下内容时 需要对这些内容进行折行 折行时遵守以下规则 C 编程规范编程规范 v2 0 第 8 页 共 27 页 2 2 13 1 在分号处折行 2 2 13 2 在操作符前折行 操作符包括 左括号 逗号 var someMethod1 longExpression1 someMethod2 longExpression2 longExpression3 2 2 13 3 有多个可以选择的地方时 选择层次较高的进行折行 同一层次是指在表达式树中同一级 同一个括号内 层次较高是指在表达式树中较高的一 级 以下两个例子可以说明这个规则 longName1 longName2 longName3 longName4 longName5 4 longname6 PREFER longName1 longName2 longName3 longName4 longName5 4 longname6 AVOID 2 2 13 4 将新行与上一行的同一级的表达式的开始处对齐 此处同一级的含义同上 2 2 13 5 方法定义的折行 如果方法定义太长 可以在参数处进行折行 下一行可以遵守同级开始处对齐原则 如 同级开始处对齐原则 someMethod int anArg Object anotherArg String yetAnotherArg Object andStillAnother 比上一行缩进一级原则 private static synchronized horkingLongMethodName int anArg Object anotherArg String yetAnotherArg Object andStillAnother C 编程规范编程规范 v2 0 第 9 页 共 27 页 2 2 13 6 简单地缩进一级 在使用以上原则时 如果出现太深的缩进 如括号开始处可能在行末附近 这时 只是简单 地在上一行的开始处缩进一级 2 3 注释注释 2 3 1 概述概述 a 注释中 应标明对象的完整的名称及其用途 但应避免对代码过于详细的描述 b 每行注释的最大长度为 100 个字符 c 将注释与注释分隔符用一个空格分开 d 不允许给注释加外框 e 编码的同时书写注释 f 重要变量必须有注释 g 变量注释和变量在同一行 所有注释必须对齐 与变量分开至少两个 Tab 键 如 int iLevel iCount m iLevel tree level m iCount count of tree items String strSql SQL h 典型算法必须有注释 i 在循环和逻辑分支地方的上行必须就近书写注释 j 程序段或语句的注释在程序段或语句的上一行 k 在代码交付之前 必须删掉临时的或无关的注释 l 为便于阅读代码 每行代码的长度应少于 100 个字符 m 代码中遇到语句块时必须添加注释 if for foreach 添加的注释必须能够说明此语 句块的作用和实现手段 所用算法等等 2 3 1C 注释语句类型 C 有三种注释语句风格 以 开始 结束的文档注释 以 开始 以 结束的 C 语言风格注释 以及以 开始 代码行末尾结束的单行注释 还有是 开始 代码行末 尾结束的 XML 单行注释 下表是对各类注释语句建议用法的一个概括 也给出了几个例子 注释语句注释语句 类型类型 用法用法示例示例 C 编程规范编程规范 v2 0 第 10 页 共 27 页 自建代码文 件注释 对于自己创建的代 码文件 如函数 脚本 注释应写 在文件开头 文件名 版本 c 2004 xxxx 公司开发部三部 作成者 创建日期 修改者 修改日期 主要内容 函数名 参数名 返回值 模块或类 ID 模块编号 可以引用系统设计中的模块 编号 描述 对此类的描述 可以引用系统设计中的描述 特性 对该类的一些特点的着重强调 作者名 创建日期 YYYY MM DD 模块 类 注释 模块开始必须以以 下形式书写模块注 释 如果模块只进行部分少量代码的修改时 则每次修改须 添加以下注释 改定人 修改日期 YYYY MM DD Start1 原代码内容 End1 将原代码内容注释掉 然后添加新代码使用以下注释 添加人 添加日期 YYYY MM DD Start2 新代码内容 End2 C 编程规范编程规范 v2 0 第 11 页 共 27 页 如果模块输入输出参数或功能结构有较大修改 则每次 修改必须添加以下注释 Log ID Log 编号 从 1 开始一次增加 描述 对此修改的描述 修改者 修改日期 YYYY MM DD 类属性注释类的属性必须编写 属性注释 方法注释在类的方法声明前 必须以以下格式编 写注释 描述 特性 param name 对方法返回值的说明 该说明必须明确说明返回的值 代表什么含义 作者名 作者中文名 创建日期 YYYY MM DD 单行注释 在方 法内部采用单行注 释语句对业务逻辑 代码片段和临时变 量声明进行说明 单行注释代码间的注 释 多行注释 采用 C 语言风格的注释 语句将无用的代码 注释掉 保留这些 代码是因为用户可 多行注释 1 多行注释 2 多行注释 3 C 编程规范编程规范 v2 0 第 12 页 共 27 页 能改变想法 或者 只是想在调试中暂 时不执行这些代码 2 3 2按目的分的注释类型 注释可按其目的分为外部注释 业务逻辑注释及其它注释外部注释 业务逻辑注释及其它注释 业务逻辑注释是指在类的方法中 用于解释业务逻辑的注释 外部注释是指不在类的方法中 是用于对外解释类或类的接口的 注释 变量注释是指不用于外部注释中 对局部变量或私有类变量等变量的注释 2 3 2 1 业务逻辑注释 在代码块 如类的方法 静态方法等 中用于解释业务逻辑的注释称为业务逻辑注释 除特 殊情况外 业务逻辑注释一般采用单行注释单行注释的方式 代码数 代码数即语句数 不包括变量定义 与代码行数不同 代码数可用自动化工具获得 注释数为针对于语句的注释数 注释数与注释的行数不同 在两条语句之间的注释 不管行 数多少 都算作一个注释 注释率 注释数 代码数 100 每个方法的注释率的下限请参见 3 数据一节 但语句数少于 3 句的除外 2 3 2 2 外部注释 不在代码块中 用于对外解释类或类的接口的注释称为外部注释 外部注释包括类的内容注 释 公共方法及变量注释 保护方法及变量注释 包方法及变量注释 除非特殊情况 外部 注释最好采用内容注释的方式 外部注释的注释率 内容注释数 定义数 100 其中定义数是指公用的类或类的接口的数量 外部注释的注释率的下限请参见 3 数据一节 如为 100 则每一个公共的 保护的 包的 方法和变量都应加一个内容注释 原理 每一个公共 保护及包方法及变量都可能被其它人用到 因此关于该项的说明必 须有 2 3 2 3 变量注释 不用于外部注释中 对局部变量或私有类变量等变量的注释称为变量注释 变量注释的注释 率 注释数 变量数 100 变量注释的注释率的下限请参见 3 数据一节 C 编程规范编程规范 v2 0 第 13 页 共 27 页 3 数据数据 3 1 程序字符数据程序字符数据 数据项单位数据值 每级缩进字符数3 最大行宽字符数80 标识符最大字符数字符数30 业务逻辑注释的注释 率下限 30 外部注释的注释率下 限 100 变量注释的注释率下 限 80 3 2 数据类型缩写表数据类型缩写表 数据类型数据类型缩写缩写 stringstr intInt charchar sbytesbyte bytebyte uintuint longlong ulongulong floatfloat doubledbl boolbool decimaldml C 编程规范编程规范 v2 0 第 14 页 共 27 页 3 3Form 控件缩写表控件缩写表 FORM 控件名控件名缩写缩写 Buttonbtn CheckBoxchkbox CheckListBoxchklistbox ComboBoxcombox ContextMenucontxtmenu ColorDialogcolordlg CrystalReportViewerrptviewer DataGriddatagrid DateTimePickerdtpicker DirectoryEntrydirectoryeny ErrorProvidererrprovider EventLogevtlog FolderBrowserDialogfld FontDialogfontdlg MonthCalendar Mcalendar MainMenumainmenu NumericUpDownnud NotifyIconni DomainUpDowndud Formfm HyperLinkhl HScrollBarhsb HelpProviderhp Imageimg ImageListimgl Labellab LinkLabelllab ListViewlv ListBoxlst OpenFileDialogofd C 编程规范编程规范 v2 0 第 15 页 共 27 页 Panelpl PictureBoxpb ProgressBarprgb PrintDialogpd PrintPreviewDialogppd PrintPreviewControlppc PrintDocumentpd PageSetupDialogpsd RadioButtonrb RadioButtonListrbl RangeValidator Rvalidator RichTextBoxrtxtbox Splittersplitter StatusBarsb SaveFileDialogsfd Timertimer TrackBartrab TreeViewtv TabControltc TextBoxtxt ToolTiptt ToolBartb VScrollBarvscrollBar 3 4COMPONENT 控件缩写表控件缩写表 Component 控件名控件名缩写缩写 FileSystemWatcherfsw DirectoryEntrydire DirectorySearcherdirs MessageQueuemsgq PerformanceCounterpfmc Processprc ServiceControllersrcc C 编程规范编程规范 v2 0 第 16 页 共 27 页 Timerct ReportDocumentrptdoc 3 5DATA 控件缩写表控件缩写表 DATA 控件名控件名缩写缩写 DataSetdataset OleDbDataAdapteroleadp OleDbConnectionolecon OleDbCommandolecmd SqlDataAdaptersqladp SqlCommandsqlcmd OdbcDbDataAdapterodbcadp OdbcConnectionodbccon OdbcCommandodbccmd OracleDataAdapteroracleadp OracleConnectionoraclecon OracleCommandoraclecmd DataViewdataview C 编程规范编程规范 v2 0 第 17 页 共 27 页 3 6WEB 控件缩写表控件缩写表 WEB 控件名控件名缩写缩写 AdRotatorart Buttonbtn Calendarcd CheckBoxchk CheckBoxListchkl CompareValidatorcpv CustomValidatorctv CrystaryReportViewercrv DataGriddg GridViewgv DataListdl DropDownListddl HyperLinkhl Imageimg ImageButtonibtn Labellab LinkButtonlbtn ListBoxlst Panelpl PlaceHolderph RadioButtonrbtn RadioButtonListrbl RangeValidatorrv RegularExpressionValidatorrev Repeaterrp RequiredFieldValidatorrfv Tabletb TableCelltc TableRowtr TextBoxtxt C 编程规范编程规范 v2 0 第 18 页 共 27 页 ValidationSummaryvs XMLxml 3 7html 控件缩写表控件缩写表 html 控件名控件名缩缩写写 HtmlAnchorhah HtmlFormhform HtmlGenericControlhgc HtmlImagehimg HtmlInputButton 按钮 htxt HtmlInputButton 重置 hrcmd HtmlInputButton 提交 hccmd HtmlInputCheckBoxhick HtmlInputFilehifile HtmlInputHiddenhihidden HtmlInputImagehiimg HtmlInputRadioButtonhirb HtmlInputText 密码 hpwd HtmlInputText 文本 hitxt HtmlSelecthslt HtmlTablehtab HtmlTableCellhtc HtmlTableRowhtr HtmlTextAreahtxta 4 最佳实践最佳实践 本节描述在编码中的最佳实践 这些实践并不强制使用 但它们是由技术人员使用多年并被 证明行之有效的方法 当然 这些实践的使用有些可能是不适用的 因此需要根据实际情况 酌情使用 C 编程规范编程规范 v2 0 第 19 页 共 27 页 4 1 类和对象问题类和对象问题 1 避免在同一个文件中放置多个类避免在同一个文件中放置多个类 2 对象使用对象使用 尽可能晚地创建对象 并且尽可能早地释放它 4 2 变量方法问题变量方法问题 1 避免为枚举指定一个类型 避免为枚举指定一个类型 2 总是使用 总是使用 C 预定义类型预定义类型 而不使用在而不使用在 System 空间内的别名空间内的别名 object NOT Object string NOT String int NOT Int32 3 避免对只读 避免对只读 read only 变量使用 变量使用 const 关键字关键字 4 变量使用 变量使用 不允许随意定义全局变量 一个变量只能有一个用途 变量的用途必须和变量的名称保持一致 所有变量都必须在类和函数最前面定义 并分类排列 5 避免一个方法超过避免一个方法超过 25 行的大小行的大小 6 当提供当提供 STATIC 成员变量时 始终提供一个成员变量时 始终提供一个 static 构造方法构造方法 7 尽量不要使用公共的类变量 尽量不要使用公共的类变量 原理 因为直接暴露类变量会影响类对自身结构的控制 另外因为外部可以直接修改类变量 类的方法也不能对暴露的类变量作任何假设 另一方面从效率上来讲 由于一些现代的虚拟 机会自动优化直接访问类变量的 getXXX setXXX 类型的函数 效率上也不会产生问题 8 使用使用 Type arrayName 而不要使用而不要使用 Type arrayName 这一点可能 C 或 C 接受有一点困难 原理 类型名可以更准确地反映类型 9 当在创建一个当在创建一个 LONG STRING 的时候 我们应该用的时候 我们应该用 StringBuilder 而不是而不是 STRING 10 对于对象的比较慎用对于对象的比较慎用 使用 使用 Object equals 方法方法 原理 多数情况下 equals 才能工作正常 11 字符串之间比较时字符串之间比较时 用用 String Compare String a String b 而不用 而不用 string a string b 4 3 注释问题注释问题 1 先写注释再写程序先写注释再写程序 写代码注释的最好方法是在写代码之前就写注释 这使你在写代码之前可以想想代码的功能 和运行 而且这样确保不会遗漏注释 另一种方法是边写代码边写注释 因为注释可以使代 码更易理解 所以在程序开发的过程中 也可以利用这一点 如果打算花些时间写注释 那 C 编程规范编程规范 v2 0 第 20 页 共 27 页 么至少你应从这个过程中获得些什么 2 在文档注释中加入在文档注释中加入 HTML 标记标记 在文档注释中加入 HTML 标记可使最后生成的技术文档的格式丰富而变得更有表现力 因此 强烈推荐采用在文档注释中加入 HTML 标记的做法 具体做的时候可在任一有 HTML 编辑 功能的编辑器 如 FrontPage 中编辑后再将 HTML 源代码拷贝进源代码编辑器中 但是 由于 Javadoc 可在多种媒体中发布 可能会在一个不支持 HTML 的媒体上进行发布 因此 在文档注释中加入 HTML 标记也会带来一些潜在的问题 但在当前环境中不会出现问题 原理 在文档注释中加入 HTML 标记可使最后生成的技术文档的格式丰富 表达力强 3 尽量在源文件的主类中加入尽量在源文件的主类中加入 main 方法方法 main 方法可以是一个简单的单元测试或类使用的例子 这样有助于帮助别人使用这个类 请随时记住 类写出来首先是给他人阅读 其次是供他人使用的 原理 可以通过这样提供一个单元测试的驱动程序或可以是一个使用的例子 4 4 逻辑结构问题逻辑结构问题 1 避免在结构体中使用方法避免在结构体中使用方法 a 鼓励参数化构造方法 b 可以重载运算符 2 避免写超过避免写超过 5 个参数的方法 个参数的方法 如果要传递多个参数 使用结构体 3 避免使用三重条件运算符避免使用三重条件运算符 4 数据库操作数据库操作 查找数据库表或视图时 只能取出确实需要的那些字段 使用无关联子查询 而不要使用关联子查询 清楚明白地使用列名 而不能使用列的序号 用事务保证数据的完整性 5 模块设计原则模块设计原则 不允许随意定义公用的函数和类 函数功能单一 不允许一个函数实现两个及两个以上的功能 不能在函数内部使用全局变量 如要使用全局变量 应转化为局部变量 函数与函数之间只允许存在包含关系 而不允许存在交叉关系 即两者之间只存在单方向的 调用与被调用 不存在双向的调用与被调用 6 结构化要求结构化要求 禁止出现两条等价的支路 例如 if a 2 else if a 3 C 编程规范编程规范 v2 0 第 21 页 共 27 页 else if a 2 else 避免使用 GOTO 语句 用 IF 语句来强调只执行两组语句中的一组 禁止 ELSE GOTO 和 ELSE RETURN 用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业管理咨询公司劳动合同
- 基于2025年医疗技术的3D打印个性化心脏瓣膜医疗器械可行性研究报告
- 2025年版合同样本:互联网接入服务合同
- 2025年年财务公司贷款合同
- 2025旅游景点门票电子合同范本
- 2025年土地利用考试试题及答案
- 2025设备租赁合同条例
- 2025年铜绿假单胞菌试卷及答案
- 2025年电子产品购销合同书范本
- 2025年电机及控制系统试卷答案
- 酒店餐饮部SOP(标准操作手册)
- 冶金机修安全培训课件
- 2022城市轨道交通列车驾驶员技能及素质要求第1部分:地铁、轻轨和单轨
- 小型公司合伙合同范本
- 2025年宿迁市公需考试试题
- 个人信息处理权转让协议(2025年数据安全法合规版)
- 学生作文稿纸(A4打印)
- 2025中国电信浙江公司社会招聘179高频重点提升(共500题)附带答案详解
- 抗菌药物DDD速查(2025版)
- 【MOOC】走向深度的合作学习-爱课程 中国大学慕课MOOC答案
- (高清版)DB43∕T 1292-2017 地理标志产品 东江鱼
评论
0/150
提交评论