Java: if-return-if-return vs if-return-elseif-return

Задал несвязанный вопрос , где у меня был такой код:

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
}

Из-за операторов return я не понимаю, почему один из них должен быть более эффективным или быстрым, чем другой. Для определенного объекта оба метода должны были бы выполнить равное количество проверок, насколько я могу видеть. И из-за операторов return никакой дополнительный код не будет запускаться ни в одном из них.

Я что-то здесь упускаю? Есть что-то в этом? Есть ли какие-то оптимизации компилятора или что-то происходит или что-то в этом роде?

Я знаю, что это микро-оптимизация, и я, скорее всего, буду придерживаться первого в любом случае, так как я думаю, что со всеми if на одной позиции он выглядит чище. Но я ничего не могу с собой поделать; Мне любопытно!

27
задан Community 23 May 2017 в 10:29
поделиться