




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaEE 程序编码规范 修订记录 目 录 JAVA 程序编码规范程序编码规范 1 1变量的命名规则变量的命名规则 1 1 1常量 包含静态的 1 1 2类变量 静态变量 及实例变量 1 1 3局部变量 1 1 4参数 2 1 5其它 2 2方法的命名规则方法的命名规则 3 3类及接口的命名规则类及接口的命名规则 3 3 1一般类名 3 3 2值对象 3 3 3ACTION 3 3 4MYBATIS配置文件 4 3 5DAO 4 3 6APPLICATION SERVICE 4 3 7工具类 4 3 8门面类 4 3 9代理类 4 3 10异常类 4 3 11接口类 5 3 12接口实现类 5 4作用域作用域 5 4 1类的作用域 5 4 2方法的作用域 5 4 3属性的作用域 5 4 4局部变量的作用域 5 5注释的编写规则注释的编写规则 6 6格式格式 7 6 1缩进 7 6 2每代码行的长度 7 6 3大括号 8 6 4空行 8 6 5空格 9 6 6IMPORT部分 9 6 7数字 9 7性能与安全性能与安全 10 7 1静态检查插件 10 7 2空指针引用 NULL POINTER DEREFERENCE 10 7 3数组引用问题 RETURN ARRAY 10 7 4硬编码敏感数据 HARD CODED SENSE DATA 10 7 5整数溢出 10 7 6对象初始化 10 7 7集合对象初始化容量 11 7 8简单参数 11 7 9FINAL类和方法 11 7 10无用的代码 11 7 11日志级别 11 7 12序列化问题 11 7 13通过名称比较类 12 7 14类克隆 12 7 15JDBC 使用 13 7 16SQL 语句 13 7 17数据库连接释放 13 7 18使用存储过程 13 7 19第三方组件 14 8附件附件 14 1 变量的命名规则变量的命名规则 1 1常量常量 包含静态的包含静态的 一个或多个英文单词的组合 所有字母均大写 单词之间以 分隔 如 public static final String UPDATE FLAG T final double PI 3 14 一般情况下常量的 public 等修饰符不可少 1 2类变量 静态变量 及实例变量类变量 静态变量 及实例变量 一个或多个英文单词的组合 第一个单词的首字母小写 其他单词首字母均大写 其余所有字 母均小写 如 private ProjectSes projectSes private static String providerUrl http 127 0 0 1 private Logger logger Logging getLogger TestLogger 一般情况下类变量 静态变量 及实例变量的 public 等修饰符不可少 1 3局部变量局部变量 一个或多个英文单词的组合 一般采用 Hungaryn naming 法 匈牙利定义法 如下 以下是基本数据类型的前缀列表 前缀前缀含义含义实例实例 ch 表示 char 类型 char chTemp i 表示 int 类型 int iNumber byte 表示 Byte 类型 byte byteGet s 表示 short 类型 short sNumber l 表示 long 类型 long lNumber f 表示 float 类型 float fCount d 表示 double 类型 double dPrise str 表示 String 类型 String strSend b 表示 boolean 类型 Boolean bFlag 其他数据类型的前缀列表 前缀前缀含义含义实例实例 Collection colUser new ArrayList col表示 Collection 类型 Collection colUser new Vector lst表示 List 类型List lstUser new ArrayList date表示 Date 类型Date dateStart new Date sb表示 StringBuffer 类型 StringBuffer sbName new StringBuffer 1024 除上述情况以外的数据类型 都以 obj 作为前缀 后面跟一个能说明变量功能或意义单词作为 变量 如 UserVO objUserVO 1 4参数参数 一个或多个英文单词的组合 第一个单词的首字母小写 其他单词首字母均大写 其余所有字 母均小写 如 public void setProjectVO ProjectVO projectVO public void setUserId String userId 建议方法的参数不要超过 5 个 超过时可以将多个参数合并为一个对象进行传递 1 5其它其它 常用数据类型的变量 采用固定的命名 包括以下几种 Connection conn ResultSet rs PreparedStatement pstmt Statement stmt 数组变量命名与普通变量命名规则一致 如 int iProjectId public String userName 每个变量的声明单独占一行 不能一个类型同时声明两个变量 如 int i j 这样的写 法是不允许的 不要在代码中出现不使用的变量 如果以后会用到或有其他用途要写上注释说明 类名 变量名中含缩写词组 缩写词组全部大写 如 String strSQL public class ProjectDAO 2 方法的命名规则方法的命名规则 方法命名的基本原则 容易看懂 一般的方法名采用两个单词动宾结构形式的名称 两个单词之间不要带其它符号 第 二个单词的首字母大写 其它的都小写 如 readBudget int budgetId deleteBudget int budgetId 只有一个动词形式的方法名不推荐使用 不容易看明白的方法名或有歧义的方法名可采用多单词的形式 每两个单词之间不要 带其它符号 从第二个单词开始 每个单词的首字母大写 其它的都小写 如 readBudgetByProjectId int projectId readBudgetByProjectIdAndYear int projectId int year 方法命名不得采用缩写形式 3 类及接口的命名规则类及接口的命名规则 3 1一般类名一般类名 一个或多个英文单词的组合 所有单词的首字母大写 其余所有字母均小写 如 public class ProjectUser 3 2值对象值对象 数据库表的逻辑名 VO 如 表 PUB DICTIONARY 的值对象名为 DictionaryVO 3 3Action 表名 模块名 Action 如 字典的 Action 类名为 DictionaryAction 3 4MyBatis 配置文件配置文件 表名 模块名 SQL xml 如 字典模块的 MyBatis 配置文件命名为 DictionarySQL xml 3 5DAO DAO 类名为模块名 DAO 如 字典 DAO 类名为 DictionaryDAO 3 6Application Service Application Service 类名为模块名 AppService 如 字典 Application Service 类名为 DictionaryAppService 3 7工具类工具类 工具类的类名为模块名 Util 如 字典的工具类名为 DictionaryUtil 3 8门面类门面类 门面类的类名为模块名 Facade 如 字典的门面类名为 DictionaryFacade 3 9代理类代理类 代理类的类名为模块名 Man 如 字典的代理类名为 DictionaryMan 3 10异常类异常类 异常类的类名为模块名 Exception 如 字典的异常类名为 DictionaryException 3 11接口类接口类 接口类的类名为模块名 Interface 如 字典的接口类名为 DictionaryInterface 3 12接口实现类接口实现类 接口实现类的类名为实现名 Imp 如 字典的接口实现类名为 DictionaryImp 4 作用域作用域 4 1类的作用域类的作用域 类的作用域保持最小范围 供包外其它类引用的类才添加 public 作用域修饰符 4 2方法的作用域方法的作用域 只供对象或类内部调用的方法必须使用 private 作用域修饰符 包外不会调用的方法严禁使用 public 作用域修饰符 4 3属性的作用域属性的作用域 静态常量 类常量 属性可以使用各种作用域修饰符 对象属性变量严禁使用 public 作用域修饰符 VO 对象属性变量必须使用 private 作用域修饰符 4 4局部变量的作用域局部变量的作用域 方法内的变量定义应该遵循最小作用域规则 如 iSize 只在下面的 for 循环中使用 int iSize alItems size for int i 0 i iSize i 建议写成 for int i 0 iSize alItems size i iSize i 属性是对象的特征 不要把非对象的属性定义为实例变量 5 注释的编写规则注释的编写规则 所有类及接口文件要写文件头注释 包含版权等 版权中的年度代码书写的开始年度 Copyright C 2011 如下 Copyright C 2011 SunLine Information Technology Co Ltd All Rights Reserved 本软件为 SunLine 开发研制 未经本公司正式书面同意 其他任何个人 团体不得使用 复制 修改或发布本软件 所有类及接口头要写类注释 包含作者 创建日期等 author history 中要书写中文名 如果注释的内容比较长则需要加 如下 技改项目业务代表实现类 实现新增项目 删除项目等方法 提供对表现层的接口 author 张三 since JDK1 4 history 2004 10 15 张三 新建 类中必要的方法 包括私有方法 要写方法头注释 其中返回值 return 需要说明含义 包括整型 布尔型 集合等 如对于整形 return 返回 1 表示成功 0 表失败 对于集合类型要写明集合内元素 的类型 return UserVO 的集合 如果注释的内容比较长则需要加 如下 修改投标人信息 param bidderVO 投标人信息 throws BidderException 修改异常 throws NoPermissionException 没有修改权限 return 修改成功返回 1 没有修改返回 0 public int updateBidder BidderVO bidderVO throws BidderException 对代码块的注释 注释语句放在代码块之上 用 进行注释 如果注释语句本身超过一行 则 用 进行注释 对某一行代码的注释 注释语句放在代码行的后面 用 进行注释 建议代码块之间空一行 如下 public void insertProject ProjectVO projectVO 新增项目信息 iProjectId Toolkit getInstance getNextKey Project 取项目 ID logger debug Generate Project ID iProjectId Project objProject projectHome create iProjectId objProject setProjectVO projectVO 从项目 VO 中取得申请人 ID 及联系人 ID 并将申请人 ID 及联系人 ID 插入到 PUB ACCESS CONTROL 表 projectVO setProjectId iProjectId this authProject projectVO 6 格式格式 引入公司指定的格式化配置文件最新版本 使用 Eclipse 的格式化功能进行代码格式化 6 1缩进缩进 设定为 4 个字符 6 2每代码行的长度每代码行的长度 代码行的长度不超过 120 个字符 6 3大括号大括号 大括号中的 与条件在同一行 单独一行 即使大括号中只有一条执行语句也要使用大 括号 如 if a b return 0 6 4空行空行 类文件头注释 package 语句 import 语句 类头注释 类的属性 方法等之间都空一行 类的属性与属性之间 方法与方法之间都空一行 如下 Copyright C 2011 SunLine Information Technology Co Ltd All Rights Reserved 本软件为 SunLine 开发研制 未经本公司正式书面同意 其他任何个人 团体不得使用 复制 修改或发布本软件 package top app project projectinfo exception import top util BaseException 公共项目管理异常类 author 张三 since JDK1 4 history 2005 03 15 张三 新建 public class ProjectException extends BaseException private String message public ProjectException String message super message this message message public String getMessage return message 6 5空格空格 等二元操作符两边分别空一格 如 int i 1 的后面空一格 如 implements Runnable cloneable 6 6import 部分部分 import 引用要具体到类名 不能用 import 语句书写的顺序为 Java 标准类 第三方软件类库 本公司自己的组件类 本工程其他 包中的类 这四部分之间分别空一行 所有需要用到的其他包的类都要在 import 中应用 不要将类 似 new java util ArrayList 的语句写在代码中 6 7数字数字 long double float 型变量后的字母 L D F 均大写 16 进制的前缀 0X 要大 写 X 数字部分 A F 要大写 代码中不要直接使用数字 1 0 1 除外 要先对数字进行变量声明 7 性能与安全性能与安全 7 1静态检查插件静态检查插件 有 tptp analysis PMD findbugs checkStyle commontools 共 5 个插件做为代码自检的标 准工具 按照给定的最新版插件配置文件检查 识别问题原因及改进范围 在上传配置库前改进代 码格式及性能 7 2空指针引用空指针引用 null pointer dereference 在使用或引用对象前 要先对其进行检查 判断其是否为空 7 3数组引用问题数组引用问题 RETURN ARRAY 不要直接返回指向包含敏感数据的内部数组的引用 不要传回一个数组 而是数组的拷贝 7 4硬编码敏感数据硬编码敏感数据 Hard coded sense data 应该将敏感数据保存在属性文件中 无论什么时候需要这些数据 都可以从该文件读取 如果 数据极其敏感 那么在访问属性文件时 应用程序应该使用一些加密 解密技术 避免导致敏感数 据泄露 7 5整数溢出整数溢出 应该对所有整数计算的结果进行检查 防止整数溢出 7 6对象初始化对象初始化 对变量的使用不要依赖于初始化 在使用对象之前 应该检查对象的初始化过程 可以采用如 下方法实现 在每个类中都应该有一个在构造器中设置的私有布尔标志 在每个非 static 方法中 代码在任 何进一步执行之前都应该检查该标志的值 如果该标志的值为 true 那么控制应该进一步继续 否 则 控制应该抛出一个例外并停止执行 7 7集合对象初始化容量集合对象初始化容量 在初始化 StringBuffer 集合类 List Set Map 等时 一般要指定对象的初始化容量 避免 不必要的空间浪费 提升性能 StringBuffer 的初始化容量比 PMD 插件检查后给出的建议值大一些的值 List Set 初始化容量可设置为估计值 Map 初始化容量可设置为估计值的 2 倍到 3 倍 7 8简单参数简单参数 方法调用时 传入的参数应该是一个具体对象 而不是一个嵌套另一个方法 比如类似 this a b c 要将方法的返回值赋给变量再作为参数传递 7 9Final 类和方法类和方法 应该将不允许扩展的类和方法应该声明为 final 这样可以防止系统外的代码扩展类并修改类的 行为 避免使用非 final 的公共静态变量 7 10无用的代码无用的代码 应该将 除启动应用程序的 main 方法之外的 main 方法 未使用的方法以及死代码从应 用程序代码中除去 调试使用的控制台输出语句 System out println 在调试结束后要删除 7 11日志级别日志级别 使用正确的日志级别输出 注意 info warning debug error 等级别的使用场合 禁止使用 debug 级别输出错误信息 禁止使用 errror 级别输出调试信息 7 12序列化问题序列化问题 在包含系统资源的直接句柄和相对地址空间信息的字段前应该使用 transient 关键字 如果资源 如文件句柄 不被声明为 transient 该对象在序列化状态下可能会被修改 从而使得被反序列化后 获取对资源的不当访问 为了确保反序列化对象不包含违反一些不变量集合的状态 类应该定义自己的反序列化方法并 使用 ObjectInputValidation 接口验证这些变量 为了保护虚拟机外的字节流 可以对序列化包产生的流进行加密 字节流加密防止解码或读取 被序列化的对象的私有状态 如果决定加密 应该管理好密钥 密钥的存放地点以及将密钥交付给 反序列化程序的方式等 如果一个类定义了自己的序列化方法 它就不能向任何 DataInput DataOuput 方法传递内部数 组 所有的 DataInput DataOuput 方法都能被重写 注意默认序列化不会向 DataInput DataOuput 字节数组方法暴露私有字节数组字段 7 13通过名称比较类通过名称比较类 在那些非得根据名称来比较类的情况下 必须确保使用了当前类的 ClassLoader 的当前名称空 间 如下面示例中所示的一种更好的比较方法 if obj getClass this getClassLoader loadClass com bar Vnet object s class is equal to the class that this class calls com bar Vnet else object s class is not equal to the class that this class calls com bar Vnet 比较类的更好方法是直接比较类对象看它们是否相等 if a getClass b getClass objects have the same class else objects have different classes 应该尽可能少用直接名称比较 7 14类克隆类克隆 除非有明确的需求 否则要保证你定义的类是不可克隆的 要使类不可被复制 只要在每个类 里定义如下方法 public final Object clone throws java lang CloneNotSupportedException throw new java lang CloneNotSupportedException 如果想让您的类可克隆并且您已经考虑了这一选择的后果 请在你的类中定义一个为 final 的 克
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年保定一模数学试卷
- 朗诵清明诗歌活动方案策划(3篇)
- 壁球馆施工方案(3篇)
- 黑色旅游活动策划方案(3篇)
- 休闲旅游活动策划方案(3篇)
- 江苏企业舞蹈活动策划方案(3篇)
- 动态雕塑施工方案模板(3篇)
- 紫薇田园都市施工方案(3篇)
- 烟感系统安装施工方案(3篇)
- 泰安就业扶贫活动策划方案(3篇)
- 2024-2025学年湖南省“炎德·英才·名校联考联合体”高二第一次联考(暨入学检测)数学试题(含答案)
- 维修人员技能提升与企业绩效关联研究
- 2024新一代变电站集中监控系统系列规范第2部分:设计规范
- 洁净手术部技术要求
- 2024-2030年中国儿童室内游乐园行业市场发展现状及发展趋势与投资前景研究报告
- DL∕T 1945-2018 高压直流输电系统换流变压器标准化接口规范
- DL∕T 1848-2018 220kV和110kV变压器中性点过电压保护技术规范
- 人教PEP版(三起)五年级英语暑假专练-阅读理解题(含答案)
- QB/T 2660-2024 化妆水(正式版)
- 《光伏发电站无功补偿技术规范》
- 交通工程专业英语裴玉龙省公开课金奖全国赛课一等奖微课获奖
评论
0/150
提交评论