JAVA编码规范_第1页
JAVA编码规范_第2页
JAVA编码规范_第3页
JAVA编码规范_第4页
JAVA编码规范_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA编码规范移动产品研发部 概述概述编写目的预期读者 重要规范重要规范操作规范日志规范异常处理安全规范 命名规范命名规范包命名规则类接口命名规则方法命名规则变量命名规则常量命名规则 注释规范注释规范注释的介绍类注释规范方法注释规范程序块注释规范废弃代码注释保留特殊代码注释规范 其他规范和实践其他规范和实践目录目录p1.1编写目的本文描述了JAVA开发中的一些需要注意的编程规范和经验,以及可以增强代码可读性的包、类、接口、方法、等的命名规则和注释规范,文档最后还介绍了一些编程的实践和技巧。p1.2预期读者和适用范围开发组全体成员。适用于开发组所有基于JAVA开发的项目。第一章概述p2.1操作

2、规范1、SVN代码提交为防止代码冲突,在提交代码前必须先更新代码,然后再提交自己新加的代码,提交时必须添加本次变更注释。当多个文件有变更时,要成批一次性提交代码,不允许一次单个文件提交。如果更新后代码有冲突,要及时找相关人员共同解决冲突,坚决不允许私自删除或覆盖其他人的代码。2、垃圾清理对于项目改造或变更后,项目中没有用到的类、方法、变量、配置和引用(import)要及时清理掉。第二章重要规范p2.2日志规范1、日志输出(1)日志输出统一使用logger进行输出,不允许使用System.out形式输出;( 2 )日志输出内容必须与系统中原日志输出格式保持一致;( 3 )每条日志输出都必须以日志

3、跟踪号开头correlationIDxxx,并且保持一个请求的的correlationID一致,对于有会话session的交易,要保持整个session的correlationID一致;( 4 )内部dubbo系统调用异常必须捕获处理,并输出日志;( 5 )客户端,通过对象交互的交易接口中,可在调用关键接口完成后,输出retcode及retmsg;通过json或xml为数据交换的接口中,输出请求及响应报文;第二章重要规范( 6 )服务端,对关键交易请求要素进行日志输出,交易处理完成后输出处理结果;( 7 )和外部系统交互,可将日志输出详细些,日志中尽量包括:请求地址、内容、http响应码等状态

4、信息、外部系统响应内容等信息;( 8 )数据库操作,捕获SQLException并对异常进行输出,可增加数据库操作错误排查;( 9 )捕获异常后要对异常信息输出ERROR级别的日志,输出示例:logger.error(“XXX操作异常:”+e.getMassage(),e);( 10 ) ERROR级别日志输出一般原则:对于由于系统原因造成业务处理失败的事件,需要记录错误日志。非系统原因的业务处理失败,不应该记录错误日志(推荐使用warn级别),避免错误日志过大,影响紧急情况下的故障分析和诊断;第二章重要规范2、记录操作日志对于商户/用户密码变更,订单/支付单状态变更等安全性要求较高的操作,需

5、要调用logServer添加操作日志。日志内容应该包括关键要素,方便后续追踪。3、用户敏感信息保护 用户的敏感信息包括:密码、短信验证码、支付验证码、身份证号、银行卡号、信用卡CVV码、信用卡有效期、银行密钥,商户密钥等信息;用户敏感信息不能泄露,否则可能会带来不安全因素。 可能会导致敏感信息泄露的方式有:Logger、URL的get参数QQ聊天(在为商户客服或技术解答问题时,如果需要回复身份证号、信用卡CVV码、信用卡有效期、商户密钥等敏感数据时,要加*处理或单独私聊)。另外,项目中使用的log4j包是经过改造扩展后的日志输出jar包,会根据log4j.xml的配置内容,自动对一些敏感信息进

6、行加*处理。第二章重要规范p2.3异常处理1、java异常的体系结构 Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。在Java中,异常分为受检查的异常,与运行时异常. 两者都在异常类层次结构中。 Java异常体系结构呈树状,其层次结构图如图所示:第二章重要规范第二章重要规范 受检查的异常:粉红色的是受检查的异常(checked exceptions),其必须被 trycatch语句块所捕获,或者在方法签名里通过throws子句声明.受

7、检查的异常必须在编译时被捕捉处理,命名为 CHecked Exception 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守。 运行时异常:绿色的异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除. 而声明为Error的,则属于严重错误,需要根据业务信息进行特殊处理,Error不需要捕捉。第二章重要规范2、异常的捕获 受检查的异常必须捕获,捕获后输出ERROR级别的日志。 调用子系统服务必须捕获异常,捕获后输出ERROR级别的日志。 对于运行时异常,要认真分析是否有必要进行捕获,捕获后输出

8、ERROR级别的日志。 ERROR级别的日志输出示例:logger.error(“XXX操作异常:” +e.getMassage(),e);第二章重要规范p2.4安全规范1、WEB安全规范 对于前台的web页面,必须加上表单防重复提交功能。 对于业务关键字段(用户编号、支付单号、支付金额等)需要加上防篡改的功能,否则可能被客户端恶意修改。 对于前台的web页面,严禁出现方便调试的后门页面。2、其他安全规范 对系统资源的访问,使用后必须释放系统资源。这类资源包括:文件流、线程、网络连接、数据库连接等。 对于文件、流的IO操作,必须通过finally关闭。 对于线程,线程资源必须通过线程池提供,不

9、允许在应用中自行显式创建线程。 对于网络连接与数据库连接,必须由框架通过连接池提供,不允许应用中自行建立网络与数据库连接。 对于大批量数据的处理,要考虑是否可能会导致系统出现内存不足,最好的解决方式是采用分批处理。 避免将URL、文件名、系统开关参数、业务规则的可变参数等硬编码。 第二章重要规范p3、1包命名规则 java开发中产生的包分为两类,一类是与各业务系统相关的包;另一类是与业务系统无关的、可公用的包。规则:包名应全部是小写字母;包名中不能出现下划线和其他特殊字符;第一个字母不能是数字。示例:与业务系统相关的包命名格式为:com. lianpay. 其中:为项目英文简称或缩写;为模块英

10、文名称或简称,如果无细分模块的话可省略模块名。与业务系统无关的、可公用的包:com. lianpay.share./所有项目通用第三章命名规范p3.2类接口命名规则规则:类的名称应使用名词;类和接口首字母必须大写,每个单词的首字母应大写(骆驼法则);接口名称应以大写I开始,接口实现类以Impl结尾。示例:public class UserBase;/类public interface IUserBaseService; /接口public class UserBaseServiceImpl implements IUserBaseService; /接口实现类第三章命名规范p3.3方法命名规则

11、规则:方法名应是一个动词或动名结构;方法名首字母应使用小写,其后每个单词的首字母大写(骆驼法则);方法返回类型boolean类型时,一般以is作为前缀。示例:getUserBase();boolean isValid();第三章命名规范p3.4变量命名规则规则:变量命名首字母小写,其后单词的首字母大写(骆驼法则);变量名一般不要用数字、下划线、$等特殊字符开头;变量名应简短且有意义,即,能够指出其用途,不要像出现a、b、str这样的命名。采用该领域的术语对变量进行命名。对于集合或数组类型的变量,可以使用其复数形式命名。示例:String fileName;String fileNames;Li

12、st fileList;第三章命名规范两变量比较时,变量命令尽可能具有意义。String version;String serverVersion;/ 避免使用 version1String clientVersion;/避免使用version2第三章命名规范字段字段类型类型firstName字符串字符串 address 地址对象地址对象 persistent 布尔值布尔值 customerNo 整型整型orderItems OrderItem的对象数组的对象数组 p3.5常量命名规则常量名所有字母全部大写,单词间以_隔开。public static final String TRANS_QU

13、ERY_RESULT_LIST = result;第三章命名规范p4.1注释的介绍在Java程序的编写过程中我们需要对一些程序进行注释,除了自己方便阅读,更为别人更好理解自己的程序,所以我们需要进行一些注释,可以是编程思路或者是程序的作用,总而言之就是方便自己他人更好的阅读。对于Java注释主要有三种:1、/ 注释一行2、/* . */ 注释若干行3、/*/文档注释(javadoc提取注释的工具/*注释内容*/)第四章注释规范p4.2类注释规范1、添加注释模板(1)在MyEclipse中,打开Window-Preference-Java-Code Style-Code Template-Com

14、ments-Types(2)参照(3)注释规范,点击Edit.对应设置即可。(3)注释规范:/* * Copyright: 连连银通电子支付有限公司 * Description: $todo(用一句话描述该类做什么) * author: guoyx * date: $date $time * version: V1.0 */第四章注释规范2、配置自动注释(1)在MyEclipse中,打开Window-Preference-Java-Code Style-Code Template-Code-New Java files(2)参照(3)注释规范,点击Edit.对应设置即可。(3)注释规范:$fi

15、lecomment$package_declaration/* * Copyright: 连连银通电子支付有限公司 * Description: $todo(用一句话描述该类做什么) * author: guoyx * date: $date $time * version: V1.0 */$typecomment$type_declaration第四章注释规范p4.3方法注释1、添加注释模板1、在MyEclipse中,打开Window-Preference-Java-Code Style-Code Template-Comments-Methods2、参照(3)注释规范,点击Edit.对应设

16、置即可。3、注释规范:/* * Title: $enclosing_method * Description: $todo(这里用一句话描述这个方法的作用) * param: $tags * return: $return_type * throws */第四章注释规范p4.4程序块注释规范注释要点:语句和程序块的注释要在被说明语句的上面行书写,缩进方式与被说明语句相同;对不易理解的分支条件表达式加注释;复杂的循环,说明出口条件;过长的方法实现,按功能实现进行分段概括说明;示例:第四章注释规范p4.5废弃代码注释保留注解要点:用“ /* */ ”实现废弃代码保留,不允许使用“ / ”;尽量完整

17、的将代码注释掉,最好完整的注释掉一个程序段;请说明注释掉的原因、人员和时间;示例:第四章注释规范p4.6特殊代码注释代码质量不好但能正常运行,或者还没有实现的代码用/TODO: 声明存在错误隐患的代码用/FIXME:声明示例:第四章注释规范p5.1其他规范if语句中(即使无else子句,即使只有一句代码),也要将语句体中的代码用大括弧“”括起来。函数的长度要控制在100语句行以内(不包括注释),程序有特殊要求时(如速度要求等)可以例外。在一个程序段完成后,加入一个空行,增加可读写性。尽可能利用括号表示表达式之间的优先级,即使它对你而言是理所当然的,要知道, 别人的水平可能不如你。即使不加括号时

18、运算顺序不会改变,也应当用括号确定表达式的操作顺序。例如: if (a = b & c = d) / AVOID if (a = b) & (c = d) / GOOD 第五章其他规范和实践其他规范和实践如果三元表达式的判断条件是一段子语句,请使用括号: (null= user) ?”不存在” : “存在”; 不要在循环内执行重复操作。可在循环外调用一次的,就避免在循环内进行不必要的反复调用。示例: for (int i = 0; i signedList.size(); i+) 应写成: int size = signedList.size (); for (int i = 0; i size; i+) 在对字符串有较多附加操作时,使用StringBuffer而非String。使用StringBuffer性能会好很多。 if.esle.(尽量少用else,更要避免嵌套的情况出现)。第五章其他规范和实践其他规范和实践p5.2Eclipse常用快捷键书写常用:CTRL+C:复制 CTRL+V:粘贴CTRL+X:切剪 CTRL+A:全选 CTRL+F:查找 或替换CTRL+Z:撤销 CTRL+Y:重做 CTRL+S:保存CTRL+D: 删除当前行CTRL+/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论