您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > linux/Unix相关 > 华为JAVA编码规范
密级:内部公开DKBAX-2001.1211.程序块采用缩进风格,空格为4个.说明:对于开发工具自动生成的代码可以不一致2.分界符(如大括号{和})应各自占一行并且在同一列,同时与引用它们的语句左对齐,在方法的开始,类和接口的定义,以及if,for,do,while,switch,case语句都要采用上述缩进说明:for(…){…//yourcode}3.较长(80字符)的语句,表达式和参数要分多行,长表达式要在低优先级操作符划分新行,操作符放在行首,新行要适当缩进,整齐,语句可读.说明:if(filename!=null&&newFile(logPath+filename).length()logConfig.getFileSize()){…//yourcode}4.一行只写一条语句说明:LogFilenamewow=null;LogFilenamethat=null;5.if,for,do,switch,while,case,default各占一行,它们的执行语句无论多少都要加{}说明:if(writeToFile){writeFileThread.interrupt();}6.相对独立的程序块,变量,说明要加空行说明:if(log.getLevel()log.getRecord()){return;}//空行密级:内部公开DKBAX-2001.122LogWritewriter;7.对齐只用空格键,不用TAB键说明:以免使用不同的编辑器阅读程序时,因TAB键所设置的空格数不同而造成程序布局不整齐,JBuildr,UltraEdit等编辑环境,支持行首TAB替换成空格,应将该选项打开8.两个以上的关键字,变量,常量进行对等操作时,操作符之前,之后或前后要加空格,进行非对等操作时,如果是关系密切的立即操作符,后面不加空格(如.操作符)说明:采用这种松散方式编写代码目的是让程序更加清晰,由于空格所产生的清晰性是相对的,所以在已经很清晰的语句中没有必要留空格,如果语句已足够清晰,则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为java中括号已经是很清晰的标志了.在长句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部中不加空格,给操作符留空格时不要连续留两个以上空格9.类属性和方法不要交叉放置,不同存取范围的属性和方法也不要交叉放置说明:类定义:{类公有属性定义;类保护属性定义;类私有属性定义;类公有方法定义;类保护方法定义;类私有方法定义;}10.源程序的有效注释量必须在30%以上11.包的注释写入一个名为package.html的html格式的说明文件放入当前路径12.包的注释内容:本包作用,详细描述本包内容,产品模块名称及版本,公司版本说明:htmlbodyp一句话描述p详细描述p产品模块br公司版本信息/body/html密级:内部公开DKBAX-2001.12313.文件注释:写入文件头部,包名之前14.文件注释内容:版本说明,描述信息,修改历史,生成日期说明:/**文件名*版权*描述*修改人*修改时间*修改内容*跟踪单号*修改单号*/15.类和接口注释:放在package注释之后,class或interface之前16.类和接口注释内容:类的注释要一句话功能描述,功能详细描述说明:/***一句话功能简述*功能详细描述*@author*@version*@see[相关类/方法]*@since[产品/模块版本]*@deprecated(表示不建议使用该类或者接口)17.类属性,公有和保护方法注释:写在类属性,公有和保护方法上面18.成员变量注释内容:成员变量的意义,目的,功能,可能被用到的地方19.公有和保护方法注释的内容:方法的一句话功能描述,功能详细描述,输入参数,输出参数,返回值,违例说明:/***@param*@return*@exception/throws*/20.对于方法内部用throw抛出的异常,要在方法的注释中标明,对于调用其他方法抛出的异常,选主要的在注释中说明,对于非RuntimeException,即throws子句声明会抛出的异常,必须在方法的注释中标明密级:内部公开DKBAX-2001.12421.注释应与描述的代码相近,对代码的注释应放在代码上方或者右方(单行注释)相邻位置,不可放在下面,如放于上方则与上面代码用空行隔开22.注释与描述的内容进行同样的缩进23.对变量的定义和分支语句,必须加以注释24.对于switch下的case语句,如果处理完一个case要进入下一个case,必须在该case处理完,下一个case前加上明确的注释说明:这样比较清楚程序编写者的意图,有效防止无故遗漏break语句25.边写代码边写注释,修改代码同时修改注释保证代码和注释一致,没用的注释要删除26.注释内容要清楚,明了,含义明确,防止二义性27.不要在注释中用缩写说明:除非必要,在使用缩写时或之前,应对缩写进行必要的说明28.不要在一行代码或表达式中间加注释说明:除非必要,不应在代码或表达式中间插入注释,否则容易使代码可理解性变差。29.通过对函数,过程,变量,结构的正确命名,以及合理的组织代码,使代码成为自注释的30.在代码的功能,意图层次上进行注释,提供有用的,额外的信息示例.如下注释意义不大。//如果receiveFlag为真。If(receiveFlag)而如下的注释则给出了额外有用的信息。//如果从连结收到信息If(receiveFlag)31.在代码结束行的右方加注释,以表明程序块的结束说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。示例:参见如下例子。If(……){programcode1while(indexMAX_INDEX)密级:内部公开DKBAX-2001.125{programcode2}//endofwhile(indexMAX_INDEX)//指明该条while语句结束。}//endofIf(……)//指明是哪条if语句结束。32.注释考虑程序的易读和外观的排版,使用的语句若是中,英文都有,建议多使用中文,除非能用非常流利,准确的英文33.方法内的单行注释用//说明:调试程序的时候可以方便的使用/*……*/注释掉一长段程序。34.注释用中文注释和中文标点,方法和类的描述第一句话使用简洁明了的话概括功能,然后加句号.接下来的部分可以详细描述说明:JavaDoc工具收集简介的时候使用选取第一句话。35.顺序实现流程的说明使用1,2,3,4.在每个实现步骤的代码前进行注释示例:如下是对设置属性的流程注释。//1.判断输入参数是否有效。……//2.设置本地变量……36.一些复杂的代码要说明示例:这里主要是对闰年算法的说明。//1.如果能被4整除,是闰年;//2.如果能被100整除,不是闰年;//3.如果能被400整除,是闰年;37.包名采用域后缀倒置加上自定义包名,用小写字母,在部门内部要规划好包名的范围,防止冲突,部门内部产品使用部门的名称加上模块名称,产品线的产品使用产品的名称加上模块名称格式:com.huawei.产品名.模块名称com.huawei.部门名称.项目名称示例:融合WEBSMAP包名com.huawei.iin.websmap通用消息转发包名com.huawei.insa2.msgtrans38.类名和接口使用完整意义的英文描述,英文首字母大写,其他使用小写和大写的混合示例:OrderInformation,CustomerList,LogManager,LogConfig,SmpTransation39.方法名使用完整意义的英文描述,首字母小写,剩余字母首字母大写,其他字母小写密级:内部公开DKBAX-2001.126示例:privatevoidcalculateRate();publicvoidaddNewOrder();40.方法中存取属性的方法用setter方法和getter方法,动作方法采用动词和动宾结构格式:get+非布尔属性名()set+属性名()is+布尔属性名()动词()动词+宾语()示例:publicStringgetType();publicbooleanisFinished();publicvoidsetVisible(boolean);publicvoidaddKeyListener(Listener);41.属性名使用完整意义的英文描述,第一个单词字母小写,剩余单词首字母大写,其余字母小写,属性名不能和方法名相同示例:privatecustomerName;privateorderNumber;privatesmpSession;42.常量名使用全大写英文,英文单词之间用下划线隔开,并使用finalstatic修饰示例:publicfinalstaticintMAX_VALUE=1000;publicfinalstaticStringDEFAULT_START_DATE=“2008-11-06”;43.属性名可以和公有方法参数相同,不能和局部变量相同,引用非静态成员变量时用this,引用静态成员变量时用类名示例:publicclassPerson{privateStringname;privatestaticListproperties;publicvoidsetName(Stringname){this.name=name;}publicvoidsetProperties(Listproperties){Person.Properties=properties;}}44.常用组件的命名以组件名加上组件类型名结尾密级:内部公开DKBAX-2001.127示例:Application类型的,命名以App结尾---MainApp;Frame类型的,建议命名以Frame结尾---TopoFrame;Panel类型的,建议命名以Panel结尾—CreateCircuitPanel;Bean类型的,建议命名以Bean结尾---DataAccessBean;EJB类型的,建议命名以EJB结尾--DBProxyEJB;Applet类型的,建议命名以Applet结尾---PictureShowApplet;45.函数名超过15个字母可采用去掉元音字母的方法或行业内约定俗成的缩写方式缩写函数名示例:getCustomerInformation()改为getCustomerInfo()46.准确的确定成员函数的存取控制符,不是必须使用public的请用protected,不是必须用protected的请用private示例:protectedvoidsetUserName()privatevoidcalculateRate()47.含有集合意义的属性命名,尽量包含复数的意义示例:customes;orderItems48.明确方法功能,精确实现方法设计,一个函数完成一个功能,简单的功能也要编写方法实现说明:虽然为仅用一两行就可以完成的功能去编写方法好像没有必要,但用方法可使功能明确化,增加程序可读性,亦可方便维护、测试。49.明确规定对接口方法参数的合法性检查应由方法的调用者负责还是有接口方法本身负责,缺省由方法调用者负责说明:对于模块间接口方法参数的合法性检查这一问题,往往有两个极端现象,即:要么是调用者和被调用者对参数均不作合法性检查,结果就遗漏了合法性检查这一必要的处理过程,造成问题隐患,要么就是调用者和被调用者均对参数进行合法性检查,这种情况虽不会造成问题,但产生了冗余代码,降低了效率。50.明确类的功能,精确实现类的设计,一个类仅实现一组相近功能说明:划分类的时候,应该尽量把逻辑处理、数据和显示分离。实现类功能的单一性。示例:数据类不能包含数组处理的逻辑通信类不能包含显示处理的逻辑51.所有的数据类必须重载toString()方法,返回该类有意义的内容说明:父类如果实现了比较合理的toString(),子类可以继承不必再重
本文标题:华为JAVA编码规范
链接地址:https://www.777doc.com/doc-7028442 .html