У меня есть следующий код:Определение сопза «переменные» внутри, если блок
Foo a;
if (some_fairly_long_condition) {
a = complicated_expression_to_make_foo_1();
} else {
a = complicated_expression_to_make_foo_2();
}
У меня есть две проблем с этим:
a
являетсяconst
и должен быть объявлен так- в «пустой» конструктор,
Foo()
вызван без причины (возможно, это оптимизировано?)
Один из способов исправить это с помощью тройной оператор:
const Foo a = some_fairly_long_condition?
complicated_expression_to_make_foo_1():
complicated_expression_to_make_foo_2();
Является ли это хорошая практика? Как вы это делаете?
Это вопрос мнения, и, на мой взгляд, да, это хороший пример использования условного оператора. – juanchopanza
Другим вариантом будет 'const Foo a = compute_foo();' и положить сложный материал в отдельную функцию. Сделал бы его повторно используемым. –
Некоторое обсуждение на эту тему раньше: http://stackoverflow.com/q/4192225/168175, с другой стороны – Flexo