质量管理

如何提高Java代码质量-优雅的写代码

2018-08-28  本文已影响0人  Snail127

写在前面的话:

  • 先让代码跑起来再考虑优化,警惕过早优化代码
  • 代码review很重要
  • 阅读代码的时间比写代码的时间多得多

应该注意的规范

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();

字符串和字符串常量equals的时候将字符串常量写在前面,能避免NPE

String str = "aac";
//replace
str.equals("aac");
//with
"123".equals(str);

使用常量

  1. 常量声明为static final,并以大写命名在编译期间就可以把这些内容放入常量池中,避免运行期间计算生成常量的值。另外,将常量的名字以大写命名也可以方便区分出常量与变量

  2. 同类型的多个常量请使用枚举

  3. 单一常量请使用 interface 声明类包裹, interface 天生就是静态公开的。

Spring 注入

Spring 注入方式注入请使用 Construction 方式进行注入,传统的@Autowired注入方式容易产生 NPE 错误,因此 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)
}

未完待续 - - -

参考链接:

http://www.cnblogs.com/xrq730/p/4865416.html

https://mp.weixin.qq.com/s/SXL83Iq3z1lsVrioMjhkMQ

阿里巴巴Java开发手册


编程是一门艺术,程序员是艺术家,其他人是码农!!

上一篇 下一篇

猜你喜欢

热点阅读