尽量减少对变量的重复计算
明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。所以例如下面的操作:
for (int i = 0; i < list.size(); i++){
...
}
//建议替换为:
for (int i = 0, length = list.size(); i < length; i++){
...
}
这样,在list.size()很大的时候,就减少了很多的消耗
尽量采用懒加载的策略,即在需要的时候才创建
String str = "aaa";
if (i == 1){
list.add(str);
}
//建议替换为:
if (i == 1){
String str = "aaa";
list.add(str);
}
循环内不要不断创建对象引用
for (int i = 1; i <= count; i++){
Object obj = new Object();
}
//这种做法会导致内存中有count份Object对象引用存在,count很大的话,就耗费内存
//建议为改为:
Object obj = null;
for (int i = 0; i <= count; i++){
obj = new Object();
}
这样的话,内存中只有一份Object对象引用,每次new Object()的时候,Object对象引用指向不同的Object罢了,但是内存中只有一份,这样就大大节省了内存空间。
去掉一次性的临时变量
程序当中,一次性的临时变量不仅是对性能、内存上小小的摧残,更是对代码可读性的亵渎。
public int someMethod() {
int temp = getVariable();
return temp * 100;
}
//建议为改为:
public int someMethod() {
return getVariable()* 100;
}
避免过长参数列表
对于一些传递了大批参数的方法,对于追求代码整洁的程序猿来说,是无法接受的。我们可以尝试将这些参数封装成一个对象传递给方法,从而去除过长的参数列表。
class BadExample {
public void someMethod(int i,int j,int k,int l,int m,int n){
//code
}
}
//建议为改为:
class GoodExample {
public void someMethod(Data data){
//code
}
}
class Data {
private int i;
private int j;
private int k;
private int l;
private int m;
private int n;
//getter&&setter
}