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

154
02 февраля 2018, 21:23

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

if (isLeftLetter && isRightLetter) {
    swap(chars, leftElementIndex, rightElementIndex);
    leftElementIndex++;
    rightElementIndex--;
} else {         
    if (!isLeftLetter) {
        leftElementIndex++;
    }
    if (!isRightLetter) {
        rightElementIndex--;
    }
}
Answer 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;

в остальных вариантах, я лично не рекомендую (верю, что некоторые не согласятся)

Answer 2
(isLeftLetter && isRightLetter) ?
    (swap(chars, leftElementIndex, rightElementIndex), leftElementIndex++, rightElementIndex--) :
    (
        (!isLeftLetter) ? leftElementIndex++ : leftElementIndex,
        (!isRightLetter) ? rightElementIndex-- : rightElementIndex
    );

Все же нежелательно использовать данную конструкцию. Как видите читаемость стала лишь сложнее. Но если это Ваш личный проект и Вы сами его поймете, то дело Ваше.

READ ALSO
Потоковая модель в NIO2

Потоковая модель в NIO2

Расскажите пожалуйста, как реализована потоковая модель в NIO2? Правильно ли я понимаю, что при инициализации (или первом установке Callback) создается...

159
Как получить Public ECDSA Key из Private ECDSA Key на Java

Как получить Public ECDSA Key из Private ECDSA Key на Java

Подскажите пожалуйста как получить Public ECDSA Key из Private ECDSA Key на Java AndroidИспользую org

160
Как сделать переинициализацию Swiper внутри Magnific Popup?

Как сделать переинициализацию Swiper внутри Magnific Popup?

ЗдравствуйтеИмеется галерея модальных окон Magnific Popup

191
Перенос кода с Jquery на нативный JS

Перенос кода с Jquery на нативный JS

Есть часть кода на jQuery, который без проблем работает:

249