1

我目前正在研究一些非常旧的代码以扩展它,并且我不断遇到可能很容易返回 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)会影响性能或编译器是否会承认冷漠并忽略它?

4

2 回答 2

6

这是微不足道的。您的方法签名应根据从 API 使用的角度来看有意义的内容来确定。

于 2013-09-23T10:52:48.220 回答
3

通常,编译器无法消除返回值,因为它不知道谁将使用该方法。至于性能,最好的办法是编写一个示例并自己测量它,方法是在循环中调用它足够多次以获得至少几秒钟的运行时间。基于测量以外的任何东西的性能问题的答案只是有根据的猜测。

于 2013-09-23T11:00:52.040 回答