Заданный не связанный вопрос, где у меня был такой код:
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
// Check property values
}
Я получил комментарий, который утверждал, что это не оптимально, и что вместо этого (если я правильно понял) это должно сделать:
public boolean equals(Object obj)
{
if (this == obj)
return true;
else if (obj == null)
return false;
else if (getClass() != obj.getClass())
return false;
// Check property values
}
Из-за операторов возврата я не могу понять, почему любой из них должен быть более эффективным или быстрым, чем другой. Что касается определенного объекта, оба метода должны были бы сделать равное количество проверок, насколько я могу видеть. И из-за возвратных операторов никакой дополнительный код не будет запущен ни в одном из них.
Я что-то упустил? Есть что-то? Есть ли какие-то оптимизации компилятора или что-то происходит или что-то еще?
Я знаю, что это микро-оптимизация, и я, скорее всего, буду придерживаться первого в любом случае, так как я думаю, что он выглядит более чистым со всеми ifs на той же позиции. Но я не могу с этим поделать; Мне любопытно!