Вот метод hashCode()
, который Eclipse любезно сгенерировал для меня:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (int) (id ^ (id >>> 32));
return result;
}
Когда я запускаю findbugs, он жалуется на последнюю строку:
Метод ...hashCode() сохраняет возвращаемый результат локально перед его немедленным возвратом [Самый страшный (2), Нормальная достоверность]
Кто здесь? Findbugs или Eclipse? Это изворотливо?
Я не могу понять, почему это может расстраивать поисковых жуков. Код совершенно ясен; сохранение его в локальном хранилище перед возвратом не усложняет чтение или обслуживание; и если компилятор не написан очень плохо, то это также не повлияет на производительность.
И все же это относится к категории Самый страшный!
Я что-то пропустил?
(Очевидно, что в некоторых отношениях код можно было бы упростить, и он получился таким, потому что в Eclipse могли быть другие поля, входящие в хеш-функцию. Но это конкретно проблема сохранение значения, а затем немедленное его возвращение, о чем я спрашиваю здесь, потому что это то, на что жалуется findbugs.)
findbugs
жалуется на код, который можно было бы упростить, просто возвращая выражение напрямую. Но он, по-видимому, думает, что умножение на переменную, которая, как известно, равна 1, — это просто прекрасно — в этом нет ничего сложного! Я чувствую, что пытаться использовать автоматизированный инструмент для обнаружения проблем со стилем в коде, сгенерированном другим автоматическим инструментом, не следует, кроме развлечения. - person ajb   schedule 14.01.2015