日期:2014-05-20  浏览次数:20660 次

请教一个重载函数的简洁写法
有两重载函数getTime(),例如是:
/*
 * getTime()函数是计算runPro()函数的运行时间;
 * 有两个getTime函数,区别只在于runPro()函数的参数列表上;
 * 问题是:有什么更加优化的写法,可以让这两个重载的getTime函数看上去更加简洁;
 */


public void getTime(){
long start = System.currentTimeMillis();
        //runPro()是要运行的函数
runPro();
long end = System.currentTimeMillis();
System.out.println("runPro的运行时间是:" +(end - start) +"毫秒" );
}

public void getTime(int num){
long start = System.currentTimeMillis();
runPro(num);
long end = System.currentTimeMillis();
System.out.println("runPro的运行时间是:" +(end - start) +"毫秒" );
}
------解决方案--------------------
其实这样写也没问题
如果参数可以改为Integer的话,可以按照2楼的方式判空
如果是简化代码,可以再写个方法

public void getTime() {
getTime(0, false);
}

public void getTime(int num) {
getTime(num, true);
}

private void getTime(int num, boolean hasArg) {
long start = System.currentTimeMillis();
if (hasArg) {
runPro(num);
} else {
runPro();
}
long end = System.currentTimeMillis();
System.out.println("runPro的运行时间是:" + (end - start) + "毫秒");
}

------解决方案--------------------
优化和优雅不一样,优化是代码有冗余或者累赘的地方可以去简单化。针对你这个功能没啥优化的地方。