Каково реальное использование троичного оператора в Java для случая ниже. Что будет более эффективным? - PullRequest
0 голосов
/ 16 апреля 2020

Является ли переназначение false логическому примитиву хорошим использованием троичного оператора?

boolean a = false;

Способ 1:

a = object.isAllowed() != null ? object.isAllowed() : false;

Способ 2:

if(object.isAllowed() != null) {
    a = object.isAllowed();
}

Пожалуйста подскажите какой способ лучше и почему?

Ответы [ 3 ]

1 голос
/ 16 апреля 2020

Нет, простое решение для этого было бы;

boolean a = object.isAllowed() != null && object.isAllowed();

Это предполагает, что object.isAllowed () возвращает логический объект, который может иметь значение null.

0 голосов
/ 16 апреля 2020

Является ли переназначение false для примитивного логического выражения хорошим использованием тернарного оператора?

В общем, нет ничего плохого в переназначении значения переменной (при необходимости), фактически буквальное значение переменной changeable .

Нужно только иметь в виду, что неэффективное переназначение переменной увеличивает сложность пространства, в конечном итоге влияет на производительность программы.

Это не связано с троичным оператором.

Пожалуйста, предложите, какой путь лучше и почему?

Оба имеют незначительные плюсы и минусы Как:

Способ 1:

Плюсы

1) Компактный синтаксис

2) Более профессиональный

Минусы

1) Неэффективное переназначение переменной каждый раз. Занимает бит больше памяти, чем традиционный if else.

2) Если задействовано несколько условий, ухудшается читаемость кода.

3) Необходимо реализовать else часть (:) троичного оператора

Способ 2:

Плюсы

1) Занимает эффективный объем памяти. (В зависимости от того, как вы написали условие)

2) Более читабельно, когда используется несколько условий.

3) else часть не обязательна

Минусы

1) Длинный синтаксис

0 голосов
/ 16 апреля 2020

По вашему вопросу object.isAllowed() возвращает либо true, либо null. Поскольку вы уже присвоили значение a как false, лучше не назначать одно и то же значение одной и той же переменной (если учитывать эффективность вашего кода).

Таким образом, способ 2 лучше в этом случае. Или вы также можете go с ответом Джейсона (это более ясно и читабельно).

...