javacodingstyle

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java编码规范改版履历版本完稿时间作者说明1.020150920barry初稿1概述1.1编写目的GoogleJava代码规范比较通用,在遵守此规范的前提下,针对本公司项目有一些具体扩展,用于规范JAVA项目编程过程中的命名和代码书写规范。1.2预期读者开发组全体成员。1.3适用范围适用于开发组所有基于JAVA开发的项目2命名规范2.1包命名规则开发组将基于JAVA开发中产生的包分为两类,一是与各业务系统相关的包,一是与业务系统无关的、可公用的包。它们的命名规则除要遵守:“包名应全部是小写字母,包名中不能出现下划线,并且第一个字母不能是数字”的规则1)与业务系统相关的包命名与业务系统相关的包命名格式为:com.unique.projectname.modulename其中:projectname为项目英文简称或缩写;如果项目名和公司名重复,只取其一即可。modulename为模块英文名称或简称,如果无细分模块的话可省略模块名。2)与业务系统无关的、可公用的包通用包命名格式为:com.unique.common.modulename//所有项目通用com.unique.projectname.common//单个项目内各模块通用2.2类名、接口命名规则类和接口的名称应是一个名词,采用大小写混和的方式,如果使用拼音则应是全拼,所有单词都应紧靠在一起,其中每个单词的首字母应大写,接口名称应以大写I开始。例如:classUser;interfaceICommonConnection;classBuMen;//此处为部门全拼每个类定义要前必须加类的说明。类和接口的后缀(前缀):后缀名意义举例Service表明这个类是个服务类,里面包含了给其他类提同业务服务的方法PaymentOrderServiceImpl这个类是一个实现类,而不是接口PaymentOrderServiceImplI这个类是一个接口ILifeCycleDao这个类封装了数据访问方法PaymentOrderDaoAction直接处理页面请求,管理页面逻辑了类UpdateOrderListActionListener响应某种事件的类PaymentSuccessListenerEvent这个类代表了某种事件PaymentSuccessEventServlet一个ServletPaymentCallbackServletFactory生成某种对象工厂的类PaymentOrderFactoryAdapter用来连接某种以前不被支持的对象的类DatabaseLogAdapterJob某种按时间运行的任务PaymentOrderCancelJobWrapper这是一个包装类,为了给某个类提供没有的能力SelectableOrderListWrapperBean这是一个POJOMenuStateBean2.3方法命名规则方法名应是一个动词或动名结构,采用大小写混和的方式,其中第一个单词的首字母用小写,其后单词的首字母大写。例如:Xxxxx.getBmList();每个方法前必须加说明包括:参数说明、返回值说明、异常说明。如果方法名实在是太长可以对变量名缩写,但是必须添加相应的说明。前缀名意义举例create创建createOrder()delete删除deleteOrder()add创建,暗示新创建的对象属于某个集合addPaidOrder()remove删除removeOrder()init/initialize初始化,暗示会做些诸如获取资源等特殊动作initializeObjectPool()destroy销毁,暗示会做些诸如释放资源的特殊动作destroyObjectPool()open打开openConnection()close关闭closeConnection()read读取readUserName()write写入writeUserName()get获得getName()set设置setName()prepare准备prepareOrderList()modify修改modifyActualTotalAmount()copy复制copyCustomerList()calculate数值计算calculateCommission()do执行某个过程或流程doOrderCancelJob()dispatch判断程序流程转向dispatchUserRequest()start开始startOrderProcessing()stop结束stopOrderProcessing()send发送某个消息或事件sendOrderPaidMessage()receive接受消息或时间receiveOrderPaidMessgae()respond响应用户动作responseOrderListItemClicked()find查找对象findNewSupplier()update更新对象updateCommission()find方法在业务层尽量表达业务含义,比如findUnsettledOrders(),查询未结算订单。数据访问层,find,update等方法可以表达要执行的sql,比如findByStatusAndSupplierIdOrderByName(Status.PAID,345)2.4变量命名规则变量命名一般采用大小写混和的方式,第一个单词的首字母小写,其后单词的首字母大写,变量名一般不要用下划线或美元符号开头。变量名应简短且有意义,即,能够指出其用途。除非是一次性的临时变量,应尽量避免单个字符的变量名。1)类的实例对象定义如下:Personperson;2)同一个类的多个对象可以采用一下定义方式:Personperson1;Personperson2;3)集合类的实例命名使用集合包含元素的英文名称的复数表示,例如:Vectorpersons;4)如果变量名实在是太长可以对变量名缩写,但是必须在类说明或方法说明部分(视缩写的范围而定)进行说明5)数组的声明要用int[]packets的形式,而不要用intpackets[]。2.5常量命名规则类常量和ANSI常量的命名应全部用大写,单词间用下划线隔开。例如:finalstaticintMIN_WIDTH=4;finalstaticintMAX_WIDTH=99;2.6骆驼法则(google)首字母小写,骆驼法则,如:publicStringorderName;3代码书写规范3.1代码规模类的方法的代码行数不能过长,尽量控制在100行(90%),长的方法要拆分成私有函数3.2返回值在一般情况下,方法返回值不应返回null。而是尽量使用异常代替返回null。如果在特殊情况必须返回null,必须在方法说明中加以特别说明,如使用“特别注意”等字样。例如:从一个集合类实例中提取一个对象,因为有些集合类实例是允许null作为键或值的,这个时候用异常取代返回null就不合适了。如果方法的返回值是集合类对象,而且返回的集合对象不包含任何元素时,则应返回0长度或0大小的集合对象。不能返回null。3.3异常整个应用系统使用自行设计的唯一异常类表,该类包括message(表示错误信息)和ID号(整型,表示异常类型)两部分,该类在创建时是自动获得类名、方法名、行号等信息。在系统开发和上线之后的一段时间内,异常信息要直接发送到log中,以便于开发人员迅速定位错误。3.4表达式1)所有的算术、逻辑表达式的每一项运算都需要加圆括号,避免使用java语言的运算符优先级,例如:(2*(x+y))/(1-x);((n1)?(n-1):(n=1));result=(result&&(lastOperandnextOperand))2)二元算术运算符(除去“/”)、二元逻辑元素符、赋值运算符,既“+、-、*、%、+=、-=、*=、/=、%=、、、==、=、=、=”等符号左右两边要加空格,例如:if(lastOperand=lastOperand)3)参数说明部分的逗号“,”和for语句循环说明部分的分号“;”之前不需要留空格,之后需要留空格。如:Calculator.add(inta,intb);for(inti=0;i100;i++);4)体前代码,体前代码包括:方法的参数说明和异常说明;条件语句,如if语句、switch语句;循环语句,如while语句、for语句。这些语句的参数说明、条件说明和循环控制都放在圆括号内。如果不是特别长,应尽量放在同一行内。同时注意,参数说明、条件说明和循环控制的结束圆括号“)”与体开始花括号“{”之间留一个空格。3.5注释注释是软件可读性的具体体现。程序注释量一般占程序编码量的20%,软件工程要求不少于20%。以下是四种必要的注释:1)类说明注释注释一般位于package/import语句之前,class描述之前。要求至少写出内容说明、创建者、创建时间和特别注意事项等内容。例如:/***名称:${file_name}br*一句话功能简述*@param参数1[参数1说明,输入输出]*@param参数2[参数1说明,输入输出]*@return:[返回类型说明]br*@exception/throws[违例类型][违例说明]*最近修改间:${date}${time}br*@see[类,类#方法,类#成员]*@author刘华*@deprecated[表示不建议使用该方法,只所以存大,就是为了兼职才版本]*变更者*变更日期*变更原因*/2)方法说明注释对几乎每个方法都应有适当的说明,位于方法声明之前,包括:说明,参数说明、异常说明、返回值说明和特别说明等。例如:/***方法描述**${tags}*@paramidString唯一标识*@parampersonidString用户唯一标识*@returnrtobjBaseReturn基本返回对象*@变更记录${date}${time}刘华创建**/3)体内代码的注释体(方法体、代码块体、静态代码块体等)内的代码按照功能分成多个虚拟的功能块,每个块以块注释“/*xxx*/”注释开始,以空行结束;例如:/**是否超级管理员**/privateBooleanisadmin=false;if(null!=curOuId&&!curOuId.equals(“”)){/*组织机构ID不为空时*/curOuId=„000000‟;空行}空行f(curOuId==null){/*组织机构ID为空时*/}4)行注释行注释“//”仅用于调试注释,在程序稳定之后,行注释必须被删除,以免影响程序的可读性。3.6toString在必要的时候,尽量重载toString方法,使其返回对当前环境有意义的内容3.7异常处理1)数据库操作,IO等必须放在try-catch-final中示例:try{//……}catch(IOExceptionioe){//……}finally{try{out.close();}catch(IOExceptionioe){//……}}2)如果不对捕获的异常进行处理,则应该记录日志或者ex.printStackTrace()try{//……}catch(IOExceptionioe){ioe.printStackTrace();}3)自己抛出的异常必须填写详细描述信息,便于定位thrownewIOException(“writingdataerror!Data:“+data.toString());4)用统一开关定定义debug信息,以便在编译后,可以生成debug和release版本

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功