Лучшие вопросы недели по Java. Как сократить If Else Java конструкцию

question and answer Java


Вопрос: Есть ли смысл код скомпилированный на Java 7 обновить на Java 8?

У меня есть старое приложение, написанное с использованием Java 7. Оно хорошо запускается в Java 8 JRE. Я не планирую переписывать какой-либо код, чтобы использовать возможности Java 8. А просто хочу узнать появятся ли какие-либо технические преимущества после повторной компиляции кода до последней версии Java 8 JDK?


Кроме того, меня не интересуют нетехнические преимущества, такие как производительность разработчика. Конечно я понимаю, что это важно, но суть вопроса не в этом.
--------------------------------------------------------------------------------------------------------------------------
Если я правильно понял вопрос, вы хотите знать, будет ли байт-код, созданный javac, «лучше» в Java 8, чем в Java 7.
Ответ: скорее всего, нет, они постоянно исправляют ошибки в компиляторе и это иногда приводит к более эффективному байт-коду. Но вы не заметите существенного ускорения от этих исправлений для кода на Java 8, судя по журналу изменений, который содержит только 2 различия между версиями.
_________________________________________________________________________________

Вопрос: Как сократить If Else Java конструкцию?
Есть метод, который проверяет null. Можно ли уменьшить количество строк в методе? А то сейчас код выглядит «грязным»:
private int similarityCount (String one, String two) {
    if (one == null && two == null) {
        return 1;
    } else if (one == null && two != null) {
        return 2;
    } else if (one != null && two == null) {
        return 3;
    } else {
        if(isMatch(one, two))
             return 4;
        return 5;
    }
}

--------------------------------------------------------------------------------------------------------------------------
Ответ:Можно сделать код более чистым и красивым:
private int similarityCount (String one, String two) {
    if (one == null && two == null) {
        return 1;
    }
    if (one == null) {
        return 2;
    }
    if (two == null) {
        return 3;
    }
    if (isMatch(one, two)) {
        return 4;
    }
    return 5;
}

А можно сделать более коротким:
private int similarityCount (String one, String two) {
    return (one==null) ? ((two==null) ? 1 : 2) : ((two==null) ? 3 : isMatch(one, two) ? 4 : 5);
}

Выбирайте :)
_________________________________________________________________________________







Комментариев нет:

Отправить комментарий