华为JAVA编码规范

上传人:m**** 文档编号:457245134 上传时间:2022-12-21 格式:DOCX 页数:18 大小:45.16KB
返回 下载 相关 举报
华为JAVA编码规范_第1页
第1页 / 共18页
华为JAVA编码规范_第2页
第2页 / 共18页
华为JAVA编码规范_第3页
第3页 / 共18页
华为JAVA编码规范_第4页
第4页 / 共18页
华为JAVA编码规范_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《华为JAVA编码规范》由会员分享,可在线阅读,更多相关《华为JAVA编码规范(18页珍藏版)》请在金锄头文库上搜索。

1、密级:内部公开DKBAX -2001.121,程序块采用缩进风格,空格为4个.说明:对于开发工具自动生成的代码可以不一致2,分界符(如大括号和)应各自占一行并且在同一列,同时与引用它们的语句左 对齐,在方法的开始,类和接口的定义,以及if,for,do,while,switch,case语句都要采用 上述缩进说明:for()/your code3,较长(80字符)的语句,表达式和参数要分多行,长表达式要在低优先级操作符 划分新行,操作符放在行首,新行要适当缩进,整齐,语句可读.说明:if(filename != null& new File(logPath+filename),length()

2、 logConfig.getFileSize()/your code4, 一行只写一条语句说明:LogFilename wow = null;LogFilename that = null;5. if,for,do,switch,while,case,default各占一行,它们的执行语句无论多少都要加 说明:if(writeToFile)writeFileThread.interrupt();6,相对独立的程序块,变量,说明要加空行说明:if(log.getLevel() log.getRecord()return ;/空行i密级:内部公开DKBAX -2001.12LogWrite wri

3、ter;7 .对齐只用空格键,不用TAB键说明:以免使用不同的编辑器阅读程序时,因TAB键所设置的空格数不同而造成程序布 局不整齐,JBuildr,UltraEdit等编辑环境,支持行首TAB替换成空格,应将该选项打 开8 .两个以上的关键字,变量,常量进行对等操作时,操作符之前,之后或前后要加空 格,进行非对等操作时,如果是关系密切的立即操作符,后面不加空格(如.操作符) 说明:采用这种松散方式编写代码目的是让程序更加清晰,由于空格所产生的清晰性是 相对的,所以在已经很清晰的语句中没有必要留空格,如果语句已足够清晰,则括 号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,

4、因为 java中括号已经是很清晰的标志了 .在长句中,如果需要加的空格非常多,那么应该 保持整体清晰,而在局部中不加空格,给操作符留空格时不要连续留两个以上空格9 .类属性和方法不要交叉放置,不同存取范围的属性和方法也不要交叉放置 说明:类定义:类公有属性定义;类保护属性定义;类私有属性定义;类公有方法定义;类保护方法定义;类私有方法定义;10 .源程序的有效注释量必须在30%以上11 .包的注释写入一个名为package.html的html格式的说明文件放入当前路径12 .包的注释内容:本包作用,详细描述本色内容,产品模块名称及版本,公司版本 说明:一句话描述详细描述产品模块公司版本信息2密

5、级:内部公开名 人时件权述改改文版描修修DKBAX -2001.12说明:/*param*return*exception /throws*/20.对于方法内部用throw抛出的异常,要在方法的注释中标明,对于调用其他方 法抛出的异常,选主要的在注释中说明,对于非RuntimeException,即throws子句声 明会抛出的异常,必须在方法的注释中标明3密级:内部公开DKBAX -2001.12If (receiveFlag)而如下的注释则给出了额外有用的信息。/如果从连结收到信息If (receiveFlag)31.在代码结束行的右方加注释,以表明程序块的结束说明:当代码段较长,特别是多

6、重嵌套时,这样做可以使代码更清晰,更便于阅 读。小例:参见如下例子。If ()program codelwhile (index MAX_INDEX )4密级:内部公开DKBAX -2001.12/3.如果能被400整除,是闰年;37 .包名采用域后缀倒置加上自定义包名,用小写字母,在部门内部要规划好包名 的范围,防止冲突,部门内部产品使用部门的名称加上模块名称,产品线的产品使 用产品的名称加上模块名称格式: com.huawei产品名.模块名称com.huawei部门名称.项目名称示例: 融合 WEBSMAP 包名 com.huawei.iin.websmap通用消息转发包名com.huaw

7、ei.insa2.msgtrans38 .类名和接口使用完整意义的英文描述,英文首字母大写,其他使用小写和大写I示例:Orderinformation, CustomerList, LogManager, LogConfig, SmpTransation39 .方法名使用完整意义的英文描述,首字母小写,剩余字母首字母大写,其他字母 小写5密级:内部公开DKBAX -2001.1243 .属性名可以和公有方法参数相同,不能和局部变量相同,引用非静态成员变量 时用this,引用静态成员变量时用类名示例:public class Personprivate String name;private s

8、tatic List properties;public void setName(String name)this.name=namepublic void setProperties (List properties) Person. Properties= propertie s44 .常用组件的命名以组件名加上组件类型名结尾 6密级:内部公开DKBAX -2001.12写方法实现说明:虽然为仅用一两行就可以完成的功能去编写方法好像没有必要,但用方法可使功能明确化,增加程序可读性,亦可方便维护、测试。49 .明确规定对接口方法参数的合法性检查应由方法的调用者负责还是有接口 方法本身负责

9、缺省由方法调用者负责说明:对于模块间接口方法参数的合法性检查这一问题,往往有两个极端现象,即:要么是调用者和被调用者对参数均不作合法性检查,结果就遗漏了合法性检查这一必要的处理过程,造成问题隐患,要么就是调用者和被调用者均对参数进 行合法性检查,这种情况虽不会造成问题,但产生了冗余代码,降低了效率。50 .明确类的功能,精确实现类的设计,一个类仅实现一组相近功能说明:划分类的时候,应该尽量把逻辑处理、数据和显示分离。实现类功能的单 一性。示例:数据类不能包含数组处理的逻辑通信类不能包含显示处理的逻辑51 .所有的数据类必须重载toString()方法,返回该类有意义的内容说明:父类如果实现了比

10、较合理的toString (),子类可以继承不必再重写。示例:public TopoNodeprivate String nodeNamq7密级:内部公开DKBAX -2001.12tryout.close ();catch (lOException ioe)/53 .异常捕获后如果不对异常进行处理,则应记录日志或ex.printStackTrace()54 .自己写的异常要写详细的描述信息55 .运行期异常使用RuntimeException的子类来表示,不用在可能抛出异常的方 法声明上加上throws子句,非运行期异常是从Excetion继承而来,必须在方法声明 上加throws子句56

11、.在程序中使用异常处理还是使用错误返回码处理,根据是否有利于程序结构 来确定,并且异常和错误码不应该混合使用,推荐使用异常57 .注意运算符的优先级,用括号明确表达式的操作顺序,避免使用默认优先级58 .避免使用不易理解的数字,用有意义的标识来代替,涉及物理状态或者含有物 理意义的常量,不应直接使用数字,用有意义的静态变量来代替59 .数组声明使用int index,不用int index60 .代码调试时不用system.out和system.err进行打印,应使用一个包含统一开关 的测试类进行统一打印61 .用调试开关来切换软件的DEBUG版本和正式版,而不要同时存在正式版和 DEBUG版

12、的不同源文件,减少维护难度62 . t己录异常不要保存 exception.getmessage(即要t己录 exception.toString() NullPointException抛出时常常描述为空.往往看不出出了什么错.8密级:内部公开DKBAX -2001.1275 .方法重载时,方法名一定要相同,避免类中使用两个相似的方法名76 .包的注释内容要求:简述本色的作用 详细描述本色的内容,产品模块名称和 版本,公司版权77 .不要在 Componentlisttener,componentResied()T法中调用 serResize(方法.78 .不要覆盖父类的静态方法和私有方法7

13、9 .不要覆盖父类的属性80 .不要使用二级以上的内部类81 .把内部类定义成私有类82 .去掉接口中多余的定义(不使用public ,abstaract, staticfinal等这是接口默认 的)83 .不要定义不会被用到得局部变量,类私有属性和私有方法和方法参数84 .显示初始化所有的静态属性85 .不要使用System,getenv(方法86 .不要硬编码n r作为换行符87 .不要直接使用java.awt.peer*里面的接口88 .使用system.arrrycopy(),不使用循环来复制数组89 .避免不必要的instanceof比较运算和类造型运算90 .不要在finalize

14、。方法中删除监听器(listeners)91 .在 finalize。方法中的 finally 中调用 super.finalize()方法92 .在finalize。方法中调一定调用super.finalize()方法93 .进行字符转换的时候应该尽可能的较少临时变量94 .使用ObjectStream的方法后,调用reset()#放对象95 .线程同步中,在循环里面使用条件测试(使用while(isWait)wait()代替 If(iswait)wait)96 .不调用 Thread类的 resume(),suspend(),stop()r法97 .减小单个方法的复杂度使用的if,whil

15、e,for,switch语句要在10个以内98 .在servelts中重用jdbc连接数据源99 .减少在servle中使用的同步方法100 .不定义在包中没有被用到的友好的属性,方法和类101 .没有子类的友好类应该定义为final方法定义为final102 .数据库操作,IO操作等需要使用结束close()的对象必须try-catch-catch-finally 9 密级:内部公开DKBAX -2001.12111 .不要定义Error和RuntimeException的子类,可以定义Exception的子类112 .线程中需要实现run()方法113 .使用equals()比较两个类的值是否相同

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号