Страницы

Поиск по вопросам

понедельник, 2 марта 2020 г.

Тернарный оператор вместо конструкции if-else

#java #if


Можно ли улучшить(упростить) данную конструкцию тернарным оператором?

if (isLeftLetter && isRightLetter) {
    swap(chars, leftElementIndex, rightElementIndex);
    leftElementIndex++;
    rightElementIndex--;

} else {         
    if (!isLeftLetter) {
        leftElementIndex++;
    }

    if (!isRightLetter) {
        rightElementIndex--;
    }
}

    


Ответы

Ответ 1



Я бы написал так: if (isLeftLetter && isRightLetter) { swap(chars, leftElementIndex, rightElementIndex); leftElementIndex++; rightElementIndex--; } else { leftElementIndex=(!isLeftLetter) ? leftElementIndex+1 : leftElementIdex; rightElementIndex=(!isRightLetter) ? rightElementIndex+1 : rightElementIdex; } Update Тернарный оператор удобно использовать для однострочных присвоений, а ля: var=(condition) ? expression1 : expression2; в остальных вариантах, я лично не рекомендую (верю, что некоторые не согласятся)

Ответ 2



(isLeftLetter && isRightLetter) ? (swap(chars, leftElementIndex, rightElementIndex), leftElementIndex++, rightElementIndex--) : ( (!isLeftLetter) ? leftElementIndex++ : leftElementIndex, (!isRightLetter) ? rightElementIndex-- : rightElementIndex ); Все же нежелательно использовать данную конструкцию. Как видите читаемость стала лишь сложнее. Но если это Ваш личный проект и Вы сами его поймете, то дело Ваше.

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

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