我正在挖掘一些非常旧的代码,以便扩展它,并且我不断遇到很容易返回void的方法。在我脑海中最臭名昭着的是:
public int dbInsert(int userID)
{
Map<String, Integer> foo = new HashMap<String, Integer>();
foo.put("bar", 0);
foo.put("user", userID);
sqlInsert(foo);
return foo.get("bar") != null ? (Integer) foo.get("bar") : 0;
}
我认为无论如何都会有一个很大的重做,但我只是想知道将这样的方法剥离到void返回类型(因为上面的代码片段始终返回0)会影响性能或是否编译器会识别无差异并忽略它吗?
答案 0 :(得分:6)
这可以忽略不计。您的方法签名应根据API使用的角度确定。
答案 1 :(得分:2)
通常,编译器将无法消除返回的值,因为它不知道将使用该方法的人。至于性能,最好的办法是编写一个样本并通过循环调用它来自己测量它,以至少获得几秒的运行时间。基于测量以外的任何其他表现问题的答案只是经过教育的猜测。