摘要:比来在做应用的机能优化,在review代码的进程中堆集了一些规律和阅历。做到这些规律的目的很俭朴,就是写出“美妙”的代码来
比来在做应用的机能优化,在review代码的进程中堆集了一些规律和阅历。做到这些规律的目的很俭朴,就是写出“美妙”的代码来。
1、正文尽量周全
对方式的正文应当包括详细的进参和成果声明,有异常抛出的环境也要详细阐述;类的正文应当包括类的功用声明、作者和点窜者。
2、多次应用的不异变量最好回纳成常量
多处应用的不异值的变量应当尽可能回纳为一个常量,便利往后的维护。
3、尽可能少的在轮回中实行方式挪用
尽可能在轮回中少做一些可避免的方式挪用,多么能够节流方式栈的树立。例如:
for(int i=0;i list.size();i++){
System.out.println(i);
}
能够点窜为:
for(int i=0,size=list.size();i size;i++){
System.out.println(i);
}
4、常量的界说能够放到接口中
在Java中,接口里只答应存在常量,是以把常量放到接口中声明便能够省往public static final这几个关头词。
5、ArrayList和LinkedList的选择
这个标题比力稀有。但凡法式员最好能够或许对list的应用场景做出评价,然后依照特征作出选择。ArrayList底层是应用数组完成的,是以随机读取数据会比LinkedList快良多,而LinkedList是应用链表完成的,新增和删除数据的速度比ArrayList快很多。
6、String,StringBuffer和StringBuilder
这个标题也比力稀有。在中止字符串拼接处置的时辰,String但凡会发作多个对象,并且将多个值缓存到常量池中。例如:
String a= a ;
String b= b ;
a=a+b;
这类环境下jvm会发作 a , b , ab 三个对象。并且字符串拼接的机能也很低。是以但凡需求做字符串处置的时辰尽可能采取StringBuffer和StringBuilder来。
7、包装类和根基类型的选择
在代码中,若是可运用根基数据类型来做局部变量类型的话尽可能应用根基数据类型,由于根基类型的变量是存放在栈中的,包装类的变量是在堆中,栈的支配速度比堆快良多。
8、尽早的将不再应用的变量援用赋给null
多么做能够帮助jvm更快的中止内存收受接收。固然良多人真实对这类做法其实不伤风。
9、在finally块中对资本中止释放
典型的场景是应用io流的时辰,非论是不是呈现异常最初都应当在finally中对流中止封锁。
10、在HashMap中应用一个Object作为key时要注重若何区分Object是不是不异
在jdk的HashMap完成中,断定两个Object类型的key是不是不异的尺度是hashcode是不是不异和equals方式的前往值。若是停业上需求对两个数据不异的内存对象看成分歧的key存储到hashmap中就要对hashcode和equals方式中止笼盖。