![Java编程规范_V0[1].1.doc_第1页](http://file.renrendoc.com/FileRoot1/2020-1/2/46450576-4e0c-4e4a-9524-2062b266c5aa/46450576-4e0c-4e4a-9524-2062b266c5aa1.gif)
![Java编程规范_V0[1].1.doc_第2页](http://file.renrendoc.com/FileRoot1/2020-1/2/46450576-4e0c-4e4a-9524-2062b266c5aa/46450576-4e0c-4e4a-9524-2062b266c5aa2.gif)
![Java编程规范_V0[1].1.doc_第3页](http://file.renrendoc.com/FileRoot1/2020-1/2/46450576-4e0c-4e4a-9524-2062b266c5aa/46450576-4e0c-4e4a-9524-2062b266c5aa3.gif)
![Java编程规范_V0[1].1.doc_第4页](http://file.renrendoc.com/FileRoot1/2020-1/2/46450576-4e0c-4e4a-9524-2062b266c5aa/46450576-4e0c-4e4a-9524-2062b266c5aa4.gif)
![Java编程规范_V0[1].1.doc_第5页](http://file.renrendoc.com/FileRoot1/2020-1/2/46450576-4e0c-4e4a-9524-2062b266c5aa/46450576-4e0c-4e4a-9524-2062b266c5aa5.gif)
已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 1 14 JavaJava 编程规范编程规范 拟制 罗京志日期 2008 年 05 月 17 日 审核 林文波日期 2008 年 05 月 20 日 批准 林磊日期 2008 年 05 月 21 日 文件名称 版本 V0 1 文件编号 FUNO IS TS 005 机密等级 CompanyCompany confidentialconfidential 生效日期 2008 年 05 月 26 日发行日期 2008 年 05 月 27 日 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 2 14 修改记录修改记录 修订号修订号作者作者日期日期简要说明简要说明 V0 1 罗京志2008 年 05 月 17 日 新作成 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 3 14 目录目录 JAVAJAVA 编程规范编程规范 1 1 引言 4 编写目的 4 适用范围 4 读者对象 4 缩略词 4 参考资料 4 2 排版 格式 4 3 命名 6 4 对象 变量 8 5 注释 8 6 方法 11 7 其它 12 8 逻辑走查 14 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 4 14 1 引言 编写目的 提供一整套编写高效可靠的 Java 代码的标准 约定和指南 它们以安全可靠的软件工 程原则为基础 使代码易于理解 维护和增强 适用范围 本文档适用于福建福诺移动通信技术有限公司 IS 软件开发组所有项目中的 JAVA 代码 编写部分 所有新编写的 JAVA 代码必须严格遵循本文档 对于已有代码维护 也尽量采 用本文档的相关约定 读者对象 本文档供以下相关人员阅览 编程规范编写人员 JAVA JSP 程序开发人员 代码走查人员 缩略词 参考资料 2 排版 格式 规则 3 2 1 所有的缩进定义为 4 个空格 规则 3 2 2 在代码中不要使用 TAB 键 应该使用 4 个空格键代替 因为在不同的编辑器 下因为 TAB 设置的空格数目不一致会引起格式混乱 规则 3 2 3 页宽设置为 120 通常一行代码不应该超过这个宽度 如超过 应该在一个 逗号或者一个操作符后折行 语句折行后 应该比原来的语句再缩进 4 个字符 规则 3 2 4 长表达式要在低优先级操作符处划分新行 操作符放在新行之首 例 if nUserType 0 for i 0 i b 4 比较操作符 赋值操作符 算术操作符 逻辑操作符 a b c 5 3 命名 规则 3 3 1 使用可以准确说明变量 字段 类的完整的英文描述符 例如 采用类似 firstName grandTotal 或 CorporateCustomer 这样的名字 虽然象 x1 y1 或 fn 这样的名字很简短 输入起来容易 但是我们难以知道它们代表什么 结果是什 么含义 因而使代码难以理解 维护和改进 可选 3 2 2 应该尽量采用软件产品相应领域的术语 如在 DSDP 项目中用户手机号码起 名为 msisdn 而不是 mobileNumber 规则 3 3 3 采用大小写混合 提高名字的可读性 一般应该采用小写字母 但是类和接 口的名字的首字母 以及任何中间单词的首字母应该大写 如 int nUserState 0 规则 3 3 4 除了部分被大家公认的缩写 尽量少用缩写 如果有使用了缩写则一定要注 释注明 可选 3 2 5 避免使用长名字 最好不超过 15 个字母 虽然 PhysicalOrVirtualProductOrService 看起来似乎是个不错的类名 但是这个名字太长了 应 该考虑重新给它起个短一点的名字 比如象 Offering 规则 3 3 6 避免使用相似或者仅在大小写上有区别的名字 例如 不应同时使用变量名 persistentObject 和 persistentObjects 以及 anSqlDatabase 和 anSQLDatabase 规则 3 3 7 避免使用下划线作为名字的首末字母 以下划线为首末字母的名字通常为系 统保留 除预处理定义之外 一般不用作用户命名 更重要的是 下划线经常造成麻烦而且难 输入 所以尽量避免使用 规则 3 3 8 对于变量命名 禁止取单个字符 如 i j k 除了要有具体含义外 还能表明其变量类型 数据类型等 但 i j k 作局部循环变量是允许的 例 int nUserType 0 用户类型 int i 0 循环变量 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 7 14 可选 3 3 9 package 的名字原则应该都是由一个小写单词组成 如果 package 名字由多 个单词组成 所有的单词都应是小写 福诺公司 package 的命名格式如下 com funo xxxx yyyy xxxx 为项目简称 yyyy 为 package 名 规则 3 3 10 Class 的名字必须由大写字母开头而其他字母都小写的单词组成 最好用 有意义的单词命名 如 class GetTreeInfo class TransToXml 等 规则 3 3 11 属性的命名必须遵循命名基本规范 建议按照匈牙利命名法进行命名 在 某些情况下如果需要明确区分属性和方法内部局部变量 建议属性名称以 m 为前缀 例如 m nUserNumber 规则 3 3 12 类方法的命名应采用完整的英文描述符 大小写混合使用 所有中间单词 的第一个字母大写 类方法名称的第一个单词常常采用一个有强烈动作色彩的动词 示例 openAccount printMailingLabel 这种约定常常使人一看到类方法的名称就能判断它的功能 虽然这种约定要使开发者多做 一些输入的工作 因为类方法名常常较长 但是回报是提高代码的可理解性 建议 3 3 13 一般说来 命名局部变量遵循与命名字段一样的约定 即使用完整的英文 描述符 任何非开头的单词的第一个字母要大写 但是为方便起见 对于如下几个特殊的局部 变量类型 这个约定可以放宽 1 流 当有一个单输入和 或单输出流在一个成员函数中被打开 使用和关闭时 通常的约定是对 这些流分别采用 in 和 out GOS96 来命名 对于既用于输入又用于输出的流 采用 inOut 来命名 2 循环计数器 因为局部变量常用作循环计数器 并且它为 C C 所接受 所以在 Java 编程中 可以采 用 i j 或 k 作为循环计数器 若采用这些名字作为循环计数器 要始终使用它们 3 异常 因为在 Java 代码中异常处理也非常普遍 所以字母 e 作为一般的异常符被广泛地接受 可选 3 3 14 静态常量字段 static final 全部采用大写字母 单词之间用下划线分 隔 示例 MIN BALANCE DEFAULT DATE 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 8 14 4 对象 变量 可选 3 4 1 在进行字符串操作时尽量使用 StringBuffer 对象 而不是直接使用 String 在处理 String 的时候要尽量使用 StringBuffer 类 StringBuffer 类是构成 String 类的基础 String 类将 StringBuffer 类封装了起来 以花费更多时间为代价 为开发人员提供了一个安全 的接口 当我们在构造字符串的时候 我们应该用 StringBuffer 来实现大部分的工作 当工作 完成后将 StringBuffer 对象再转换为需要的 String 对象 比如 如果有一个字符串必须不断地 在其后添加许多字符来完成构造 那么我们应该使用 StringBuffer 对象和她的 append 方法 如果我们用 String 对象代替 StringBuffer 对象的话 会花费许多不必要的创建和释放对象的 CPU 时间 建议 3 4 2 避免不必要的使用关键字 synchronized 应该在必要的时候再使用她 这 是一个避免死锁的好方法 建议 3 4 3 谨慎使用 Vector 和 ArrayList 类 Vector 是同步的 这个类中的一些方法保证了 Vector 中的对象是线程安全的 而 ArrayList 则是异步的 因此 ArrayList 中的对象并不是线程安全的 因为同步的要求会影响执 行的效率 所以如果你不需要线程安全的集合那么使用 ArrayList 是一个很好的选择 这样可 以避免由于同步带来的不必要的性能开销 从内部实现机制来讲 ArrayList 和 Vector 都是使用数组 Array 来控制集合中的对象 当 你向这两种类型中增加元素的时候 如果元素的数目超出了内部数组目前的长度它们都需要扩 展内部数组的长度 Vector 缺省情况下自动增长原来一倍的数组长度 ArrayList 是原来的 50 所 以最后你获得的这个集合所占的空间总是比你实际需要的要大 所以如果你要在集合中保存大 量的数据那么使用 Vector 有一些优势 因为你可以通过设置集合的初始化大小来避免不必要的 资源开销 可选 3 4 4 对于不使用的对象显示的设置为 null 以提高 java 虚拟机的垃圾回收效率 例 Vector vt new Vector vt Clear vt null 主动释放内存 尽量减少对内存的占用时间 5 注释 规则 3 5 1 必须用 javadoc 来为类生成文档 不仅因为它是标准 这也是被各种 java 编译器都认可的方法 规则 3 5 2 在文件的开始部分应该有文件的说明信息 应包含如下信息 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 9 14 1 版权信息 2 文件名及其注释 3 作者 完成日期 4 版本信息 5 修改记录 示例 Copyright c 2008 福建福诺移动通信技术有限公司 All rights reserved 文件名称 StringUtil java 描 述 字符串处理类 author xxx date 2007 年 2 月 27 日 version 1 0 修改记录 修改时间 2008 年 2 月 27 日 修 改 人 xxx 修改内容 增加字符串分割方法 规则 3 5 3 应按照 javadoc 的规范自动生成类方法中的注释信息 示例 获取三个整数的最小值 功能描述 param num1 in int 整数 1 param num2 in int 整数 2 param num3 in int 整数 3 return int 三个整数中的最小值 private int minOfThree int num1 int num2 int num3 建议 3 5 4 变量名字要求含义明确 可以没有注释 如果需要添加注释 请按照如下格 式 protected int iSize 队列长度 规则 3 5 5 注释应该增加代码的清晰度 内容要清楚 明了 含义准确 防止注释二义 性 代码注释的目的是要使代码更易于被同时参与程序设计的开发人员以及其他后继开发人员 理解 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 10 14 规则 3 5 6 保持注释的简洁 最好的注释应该是简单明了的注释 注释不必洋洋洒洒 只需提供足够的信息 使别人能够理解你的代码 规则 3 5 7 注释与代码应保持一致 修改代码同时修改相应的注释 不再有用的注释要 删除 规则 3 5 8 注释应与其描述的代码相近 对代码的注释应放在其上方或右方 对单条语 句的注释 相邻位置 不可放在下面 如放于上方则需与其上面的代码用空行隔开 规则 3 5 9 如果代码中有需要日后补充的内容 必须添加注释说明 格式如下 todo 非正式定义子系统编号 需要删除 规则 3 5 10 注释与所描述内容进行同样的缩排 例 错误的注释格式 public boolean checkUserValid int nUserState 如果用户状态正常 则返回正确 否则返回错误 return nUserState 1 正确的注释格式 public boolean checkUserValid int nUserState 如果用户状态正常 则返回正确 否则返回错误 return nUserState 1 规则 3 5 11 对变量的定义和分支语句 条件分支 循环语句等 必须编写注释 例 for nUserState 1 如果用户状态不正常 建议 3 5 12 在程序块的结束行右方加注释标记 以表明某程序块的结束 说明 当代 码段较长 特别是多重嵌套时 这样做可以使代码更清晰 更便于阅读 例 if nUserState 1 如果用户状态不正常 for 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 11 14 end of if nUserState 1 6 方法 规则 3 6 1 函数的规模尽量限制在 200 行以内 可选 3 6 2 一个方法仅完成一件功能 如果一个方法实现多个功能 可以考虑分拆成多 个方法 每个方法实现一个功能 可选 3 6 3 如果多段代码重复做同一件事情 那么可考虑提供一个公用的方法实现这个 功能 供其它方法调用 建议 3 6 4 减少函数本身或函数间的递归调用 可选 3 6 5 检查函数所有参数输入的有效性 例如参数传入 ArrayList 对象为空 如果 直接使用会导致程序异常 可选 3 6 6 对方法的异常中应有全面的处理 不要想当然在 try 块中实现的功能中只可 能发生某一种异常 实际上可能会发生很多异常 如 IOException NullPointerException 等 对抛出的异常最后应加上捕捉默认的 Exception 并进行处理 例 try catch SQLException sqle catch Exception e 捕捉其它所有的 Exception 处理异常 可选 3 6 7 对所调用函数的错误返回码要仔细 全面地处理 规则 3 6 8 去掉没有用 没必要的变量 代码 程序中的垃圾代码不仅占用额外的空间 而且很可能给程序的测试 维护等造成不必要的麻烦 规则 3 6 9 某些语句经编译后产生告警 但如果你认为它是正确的 那么应通过某种手 信息服务部 Java 编程规范 福建福诺移动通信技术有限公司信息服务部 12 14 段去掉告警信息 必须打开编译器的所有告警开关对程序进行编译 建议 3 6 10 exit 除了在 main 中可以被调用外 其他的地方不应该调用 因为这样做 不给任何代码机会来截获退出 一个类似后台服务地程序不应该因为某一个库模块决定了要退 出就退出 可选 3 6 11 位于 for 循环中作为计数器值的数字常量 除了 1 0 和 1 之外 不应被直接 写入代码 7 其它 规则 3 7 1 项目组提前设定调试信息的打印方式和打印级别 并设定统一的调试标识 在系统上线后应关闭调试标识 写调试日志前尽量先判断日志级别 再写日志 避免不必要的 字符串开销 如 if debug myLogger debug 用户状态获取成功 编码过程中应严格遵守调 试信息的打印规定 严禁使用 System out println 输出调试信息 建议 3 7 2 要将系统包 插件包 自定义包 区分开来 如系统包放在一起 然后是插 件包 自定义包等 例如 import java io InputStream import java util Observable import com nl fjvip tool 尽量明确指明需要包括的 package 中的类 不要使用 import java io 这样运行速度会 更快些 查错也方便 规则 3 7 3 数据库操作必须把连接关闭代码放置到 finally 模块中 以保证数据库连接 被有效释放 Connection connection null Statement stmt null ResultSet resultSet null try Create a connection
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路建设施工期间环境保护及生态修复合同
- 2025公务员铁警面试题目及答案
- 危险废物运输与环保风险评估与管理合同
- 期门穴穴位注射睡眠效果-洞察及研究
- 保定银行笔试题库及答案
- 专业分流面试题目及答案
- 暖通专业面试题及答案
- 河北计算机专业试题及答案
- 2025年小额贷款考试题及答案
- 消防安全活动培训反思课件
- 做最勇敢的自己
- 《中国象棋基础教程》课件
- 保险销售技巧培训课件
- 《支气管动脉栓塞术》课件
- 2025年河北石家庄市高速公路集团限公司面向社会公开招聘收费人员150名高频重点提升(共500题)附带答案详解
- 地面铺装室外施工合同
- 人员分级管理
- 2024-2025年江苏专转本英语历年真题(含答案)
- 《铁路轨道维护》课件-钢轨母材探伤
- 餐饮服务工作培训
- 高中学习主题班会
评论
0/150
提交评论