Hello ! 我是小小今天开始本周的第一篇,如何改善代码质量
前言
对于代码质量改善,需要注意以下几个点:
1. 先让代码跑起来再考虑优化,警惕过早优化代码
2. 代码review很重要。
3. 阅读代码的时间比写代码的时间要多
注意的规范
- 所有文件的开头都需要有Java文档注释
- 尽量使类中所有变量都是私有的,只能通过方法进行访问。
- 常量应该全部大写,单词之间由下划线进行分割。
- 一行应该只能有一个语句
- 使用if语句,for语句,while语句,do语句,switch语句的时候需要使用大括号
- 一行当中不能超过80个字符
- 对于数组应该使用int[] packages 。
- 不能在循环中构造和释放对象。
- 标记为final的类都不能扩展
- 在任何地方使用局部变量
- 用代码处理内存溢出
- 使用懒加载
- try-cathch 包含尽可能少的代码
- 集合如果能估计长度,请指定容器初始长度
- 在Java编程中,数据库连接,IO操作,使用完毕后需要尽可能关闭。
- SQL语句应该大写。
for优化
//replace
for( int i = 0; i < collection.size(); i++) {
...
}
//with...
for( int i = 0, n = collection.size(); i < n; i++) {
...
}
循环尽量不要不断创建对象
//这种做法会导致内存中有count份Object对象引用存在,count很大的话,就耗费内存了
//replace
for (int i = 1; i <= count; i++){
Object obj = new Object();
}
//with...
Object obj =null;
for (int i = 1; i <= count; i++){
obj = new Object();
}
字符串优化
String str1 = "str";
String str2 = "ing";
String str3 = "str" + "ing";//常量池中的对象
String str4 = str1 + str2; //在堆上创建的新的对象
String str5 = "string";//常量池中的对象
System.out.println(str3 == str4);//false
System.out.println(str3 == str5);//true
System.out.println(str4 == str5);//false
//使用append代替+
//replace
String str = "profit = revenue( “ + revenue +
”) - cost( “ + cost + ”)";
//with
String str = new StringBuffer().append( "profit = revenue( “).
append( revenue).append( “) - cost( “).
append( cost).append( “)“).toString();
字符串优化如下所示
String str = "aac";
//replace
str.equals("aac");
//with
"123".equals(str);
使用常量
常量声明为static final以大写命名。
同类型常量使用枚举
单一常量使用interface声明
spring注入
代码如下所示
使用Construction代替FieLd注入
class Foo {
//replace
//@Autowired private SomeService someService;
//with
private final SomeService someService;
@Autowired public Foo(SomeService someService) {
this.someService = someService;
}
}
数组复制
使用System.arraycopy ()进行复制
单元测试
进行单元测试
异常
异常规范如下所示:
if(logger.isDebugEnabled){
//打印当前异常错误信息+不处理的异常向上抛
logger.debug("log info"+ e.localErrrorMsg,e)
}
关于作者
我是小小,一枚双鱼座的程序猿,我们下期再见~bye~