2013-09-23 4 views
1

Я в настоящее время копаю свой путь через какой-то очень старый код, чтобы продлить его, и я постоянно сталкиваюсь с методами, которые могут легко вернуть пустоту. Самый позорный один в моем сознании происходит вдоль линий:Какое влияние оказывает влияние типа возврата на пустоту?

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; 
} 

Я думаю, что есть большая сделать заново придумывают в любом случае, но мне было просто интересно, сколько из воздействия зачистки метод, как это в пустоте возвращаемый тип (поскольку фрагмент кода выше всегда возвращает 0) повлияет на производительность или будет ли компилятор распознавать безразличие и игнорировать его?

+4

либо метод должен вернуть значение, либо нет. Это просто. –

+3

Вы предполагаете, что 'sqlInsert' не изменяет' foo'; оправдано? –

+1

В этом коде достаточно внешних накладных расходов, что влияние изменения метода на пустоту будет незначительным на несколько порядков. Почему вы считаете, что эта «печально известная» для меня загадка. – EJP

ответ

7

Это незначительно. Ваша подпись метода должна определяться на основе того, что имеет смысл с точки зрения использования API.

1

Как правило, компилятор не сможет устранить возвращаемое значение, поскольку он не знает, кто будет использовать этот метод. Что касается производительности, лучше всего составить код образца и измерить его сами, вызвав его в цикле достаточно времени, чтобы получить время запуска в считанные секунды. Ответы на вопросы производительности, основанные на чем-либо, кроме измерения, - это только обоснованные догадки.

Смежные вопросы