学习JAVA语言不仅要学它该如何使用,还需要学习它的编码规范。优秀的代码不仅仅是正确,还应该是简洁、可维护、可靠、可测试、高效、可移植的。
编程是一种创造性的工作。
通用原则:
(1). 清晰第一。清晰性是易于维护、易于重构的程序必需具备的特征。
(2). 简洁为美。简洁就是易于理解并且易于实现。
(3). 风格一致。相比个人习惯,所有人共享同一种风格带来的好处,远远超出为统一而付出的代价。
一、JAVA命名注意点
(1)、 项目名全部小写
(2)、 包名全部小写
(3)、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。
(4)、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。
(5)、 常量名全部大写
(6)、 所有命名规则必须遵循以下规则:
1)、名称只能由字母、数字、下划线、$符号组成
2)、不能以数字开头
3)、名称不能使用JAVA中的关键字。
4)、坚决不允许出现中文及拼音命名。
二、JAVA注释规范
(1)、类注释
· 在每个类前面必须加上类注释,注释模板如下:
· /**
· * Copyright (C), 2006-2010, ChengDu Lovo info. Co., Ltd.
· * FileName: Test.java
· * 类的详细说明
· *
· * @author 类创建者姓名
· * @since 创建日期
· * @version 1.00
· */
注意:版权一定要与 @since的时间一致。
(2)、属性注释
· 在每个属性前面必须加上属性注释,注释模板如下:
· /** 提示信息 */
· private String strMsg = null;
(3)、方法注释
· 在每个方法前面必须加上方法注释,注释模板如下:
· /**
· * 类方法的详细使用说明
· *
· * @param 参数1 参数1的使用说明
· * @return 返回结果的说明
· * @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
· */
注意:注释中的参数一定要全面,一般包含参数和返回值。
(4)、构造方法注释
· 在每个构造方法前面必须加上注释,注释模板如下:
· /**
· * 构造方法的详细使用说明
· *
· * @param 参数1 参数1的使用说明
· * @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
· */
(5)、方法内部注释
· 在方法内部使用单行或者多行注释,该注释根据实际情况添加,单行注释“//”,多行注释“/* * */”
· 在方法内部进行注释的时候,注释尽量与上一行的代码之间加一个空格,例外是大括号{与注释之间可以不加空行。
· 例如:
· //背景颜色
· Color bgColor = Color.RED
· /*
* 背景颜色
*/
· Color bgColor = Color.RED
三、CSEC整改遇到的相关问题总结
(1)对付魔鬼数字
在进行代码整改的时候,最令人头疼的一个问题就是魔鬼数字。但是有的时候开发人员为了图省事,经常起一些毫无意义的常量名字来替代数字,例如数字1定义为NUM_ONE。这样做是很不正确的事情,因为在代码中,无论是哪个位置出现数字都是有其一定的含义的,比如数组的位置、向量的长度等。因此,我们在利用常量消除魔鬼数字的时候,一定要注意常量的命名问题,常量的名字要让人一眼就可以看出它的意思。
首先,我们需要认清工具的本质,我们不能只是为了对付checkstyle检测工具,而不是针对代码本身的问题进行修改。工具本来是想提醒程序员,避免写出难以维护的代码。所以,我们千万不要误以为自己很聪明的把代码进一步隐藏起来,忽略当时的一个小问题,可能在后面会引发更大的问题。
如果我们真的是为了提高自己的编码水平,提高项目的代码质量,就应该认真的对待这些魔鬼数字。 对于魔鬼数字,应该有一个良好的命名,对于经常出现的,还应该找个合适的地方加以管理。
解决魔鬼数字的正确方法:
要解决魔鬼数字,首先是认清魔鬼数字代表的具体意义,结合意义给它起一个合适的名字。
例如下面的代码调整范例:
2是某个值在列表中的位置索引,换成XXX_IDX
80是http的默认端口,换成DEFAULT_HTTP_PROT
1000是用来把秒换成毫秒的,可以用MILLISECONDS_PER_SECOND
60000是默认超时时间来的,换成DEFAULT_TIMEOUT
同样,经常会看到魔鬼字符串,”0”,”1”这样的值出现代码里边,也应该把给他们起一个好的名字,例如作为执行结果,有SUCCESS、FAILED等。
注意:数组调用超过范围赋值为-1,这个-1是默认的情况,但是Checkstyle可能把他检测为魔鬼数字,可以忽略这个问题。
(2)注释问题
1)、对于常量、类变量(方法外的变量)、方法的注释需要在那一行上面添加头注释形式
2)、方法内的变量和魔鬼数字等的注释统一用//
3)、catch括号里的信息报错,注释写在{}的{下面一行
4)、注意注释统一用中文来写,除非特有名词简写成英文,其他都使用中文注释
(3)其他一些注意事项
1)集合后面要是复数形式,但是要注意对应单词是否是可数,data是不可数的,或者说是单复数同型,position做位置讲的时候是不可数的。
2)名字的长度正常是最少两个字符,但是在循环里面(i,j,k)可以例外。
3)对任何变量的命名都要讲求一眼就能让读者明白其含义,不能随意命名
4)表达式的比较,应该遵循左侧倾向于变化,右侧倾向于不变的原则
5)JAVA中Long类型建立的时候如果没赋值,会默认给一个0.而long类型建立的时候如果没有赋值,则是null!所以Long类型是包装类型,long类型是基础类型,不能混淆。
注释的话基本上都是:数据库操作必须使用包装器类型
6)checkstyle检查的时候说参数声明和参数使用距离过长,可以忽略这个提示。
7)方法定义的参数里面使用了变化的参数,可以忽略
8)对于只在日志中打印的内容,没有必要定义常量,因此可以忽略此处字符的重复。定义成常量要考虑其是否有特殊的意义来定义其为常量。
9)避免函数过长,函数要不超过50行(算法、协议可以除外)
10)注意行宽(注释不超过120个字符,中文60个字符)
11)布尔类的get方法应该用is开头来命名get方法,布尔型变量不能以否定开头
12)public方法要注意入参的判断,判断是否为null
注意:在进行CSEC整改的时候我们更应该关注于检查代码的安全性问题,安全性比一些规范更重要。因此,一定要注意方法入参的判断、是否泄漏敏感信息等事情。
五、JAVA编程还应该注意一下方面
(1)正确使用JAVA的面向对象技术,使得程序结构清晰、简单,方便团队其他人员查看和修改,提高代码的重用性。但是要注意方法内部实现的细节,使用JAVA特性的时候,要重点注意,尤其是多线程并发、泛型、装箱数据类型、异常处理、对象克隆等。
(2)再次强调我们在编码的时候要符合JAVA的常用习惯或者团队中统一的习惯,达到可读性。简单性、广泛性、兼容性的设计原则。同时也要注意开发的高效性、程序性能、安全性、可靠性问题。
【参考文献】
《华为Java语言通用编程规范-V4_5》
针对魔鬼数字等问题很好地文章,如想详细了解可查看原文链接:
BY:HW-TS






































苏公安网备 32011402010933号