Java 代码重构 (一)

Java代码重构(一)

项目中代码开发规范要求

对于企业项目来说,开发规范约束是主要的代码规范约束之一,除遵循行业的开发规范外,企业内部也会定义
一套属于自己的代码开发规范,所以任何的开发规范都是以整体统一规范为前提的,不过我们可以自己在开发
的过程中遵循一些基本的开发规范,养成自己的编程风格,形成良好的代码开发习惯。

项目中开发规范约束

1、包的命名应该采用小写英文单词(名词)根据模块进行命名,eg:menu、user等
2、类的命名应该以大写字母开头,eg:User 、Menu等
3、方法命名采用动词+名词的方式,eg:findUser()

个人开发规范约束

  • 方法命名 规范
为养成个人的开发编程风格,建议在遵循企业项目规范的前提下,选择一种方法命名风格,并在
整个项目中都采用该种风格进行编程,
a、查询、搜索、获取、提取数据或对象,单词有:select、find、get、extract 等
b、修改、更新数据或对象,单词有:update、modify、edit 等
c、新增、添加、保存数据或对象,单词有:insert、add 、save等
d、删除 数据或对象 ,单词有:delete 等

对于这上述四种常见的操作方法,每种建议选取其中的一个单词,然后采用 动词+对象 的方式在
整个项目中对方法统一规范,从而形成自己的编程风格,
如:
查询单条数据:getUser() 、getMenu()
查询多条数据:getUserList()、getMenuList()
查询分页数据:getPagedUserList()、getPagedMenuList()
更新单条数据:updateUser(User user)
更新多条数据:updateUserList(List users)
新增单条数据:saveUser(User user)
删除单条数据:deleteUser(User user);
删除多条数据:deleteUserList(List users)

对于上述习惯,也不是说所有地方必须都用该种方式,有时候具体可根据当时的上下文语义环境进行
决定命名,选择一种命名习惯也是养成个人编程习惯的开始。
  • 编码习惯 规范
1、定义集合时需指定具体的泛型(除定义泛型),可进行编译时错误检查
    eg:List params = new ArrayList(16);

2、初始化集合时需指定集合初始值的大小,若不确定可定义为16(阿里规范),如上

3、项目中涉及对象传递或者调用时,需进行 Null 对象判断,避免 NPE(空指针),
      建议采用Assert.notNull(Object,"error msg")来判断

4、项目中集合、字符串的非空判断可通过使用 org.apache.commons 包的CollectionUtils、
	  MapUtils、StringUtils等工具类,避免自己重复造轮子

5、常量命名全部采用大写,单词用下划线隔开,语义要清晰,不要嫌名字过长

6、代码注释,行注释和段落注释必须区分,禁止在代码尾部注释

7、所有重载的方法必须加 @Override注解,加上后可以判断方法是否重载成功

8、禁止代码中定义无任何意义的变量名称,如: flag,result等

9、禁止使用任何魔法值(即未经定义的常量)出现在代码中,
      eg: if("passed".equals(state)){ // ... }
      其中"passed" 未定义直接使用是不推荐使用的

10、定义数组采用 String[] args = new String[]{},禁止使用:
	String args[] = new String[]{};

11、在 if/else/for/while/do 语句中必须使用大括号,即使只有一行代码,禁止使用如:
	if (flag) System.out.println("hello world");

12、避免定义或者使用容易引起混淆的变量,eg: o/O 与0(零),
        禁止使用long height = 2l;建议使用long height = 2L;

13、禁止在代码中包含无关注释和保留无用代码

14、禁止在循环语句中采用string字符串拼接,建议使用StringBuffer ,避免浪费内存空间
	eg:
		String ids = "";
		for (int i = 0; i < list.size(); i++) {
				ids += list.get(i).toString() + ",";
			}
	应为:
		int size =  list.size();
		StringBuffer ids = new StringBuffer(size );
		for (int i = 0; i < size ; i++) {
				ids .append(String.valuesOf(list.get(i))) + ",";
			}

15、避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成 本,直接用类名
	   来访问即可,eg:this.logger.error("查询失败", e);
	   改为:ProgramApplyServiceSpringImpl.logger.error("查询失败", e);

16、禁止在代码中包含无关注释和保留无用代码,eg: //*** start ***

17、代码中不允许有黄色警告线,需处理所有黄色警告线

18、方法之间需空两行,进行分割,同一个方法中,为区分业务逻辑,通过空一行,进行逻辑区分

19、禁止引入无关的包、注入无关的bean,编写无关的方法(工具类除外)、声明无用的变量

20、避免采用反逻辑运算符,不便于理解,如
    if (!file.isExist()) {// ...}
    可写为 if (file.isNotExist()) {// ...}

21、对于MVC模型,禁止在controller层编写具体的实现逻辑,应只负责分发请求和逻辑处理,
        具体实现应由service实现类去具体是实现逻辑处理

22、对于每个对象的增、删、改、查方法建议统一返回一个 boolean 值,表示操作成功或失败

你可能感兴趣的:(Java)