Я делаю чрезмерное использование тернарного оператора, иногда даже заменяя очень простые утверждения с ним. Например, я только что нашел себе замену что-то вроде этого:Использование тернарного оператора Java, что подразумевает назначение переменной самому себе?
if (foo != null) {
bar = foo;
}
с этим:
bar = (foo == null) ? bar : foo;
Хотя это вопрос вкуса, который один читает лучше, я задаюсь вопросом:
- В этом случае хуже производительность тернарной версии?
- Есть ли другие причины против использования троичного здесь?
Причина, почему я верю, производительность может быть хуже, в том, что я предполагаю, что компилятор не может оптимизировать троичной для того, когда foo
является null
. Следовательно, значение bar
может быть снова установлено на одно и то же значение, теряя некоторое время процессора, где простой оператор if
никогда не дойдет до этой точки. Но мои знания о компиляторах и исполнении ограничены, поэтому вопрос.
Идея чего-то, что «рушится» в определенных условиях в «bar = bar», странно для меня. Первый (с выражением 'if') является более подробным, но более читаемым и понятным. Мои $ 0.02 – Taylor
Вы уже ответили на свой вопрос. это «накладные расходы» и нецелевое использование тернарного оператора. – Andrew
Почему это может отличаться от назначения i = i для любой другой переменной? –