【发布时间】:2018-02-15 00:31:00
【问题描述】:
我想问一下关于使用 2 个三元运算符而不是 if/else 块来处理 2 个变量的一般意见是什么。
举个例子更清楚,
if/else 块:
var foo;
var bar;
if (boolean_expression) {
foo = value1;
bar = value2;
} else {
foo = value3;
bar = value4;
}
使用 2 三元运算:
var foo = (boolean_expression) ? value1 : value3;
var bar= (boolean_expression) ? value2 : value4;
显然 if/else 块更有效,因为它只对 boolean_expression 求值一次,而 2 个三元运算对它求值两次。
但是,在我看来,使用三元运算更加简洁易读,因此我最近决定牺牲两者之间的最小效率差异来提高我的代码的可读性。 (只要代码不是关键或执行太频繁)
另外,对于 3 个变量,我会弱弱地认为相同。
我对我的代码做了什么可怕的事情,还是有更好的方法我不知道?
我正在用 c# 编写代码,但我想这个问题对于任何具有三元运算的语言都很重要。
【问题讨论】:
-
您在这里要求一些基于意见的答案,但 IMO 您在第一个选项中所拥有的内容更具可读性,并且更好地传达了代码的意图
标签: ternary-operator