仅将其用于简单表达式:
int a = (b > 10) ? c : d;
不要链接或嵌套三元运算符,因为它难以阅读和混淆:
int a = b > 10 ? c < 20 ? 50 : 80 : e == 2 ? 4 : 8;
此外,使用三元运算符时,请考虑以提高可读性的方式格式化代码:
int a = (b > 10) ? some_value
: another_value;
这使得调试稍微困难,因为你不能在每个子表达式上放置断点。
我喜欢它们,特别是在类型安全的语言中。
我不明白这是如何:
int count = (condition) ? 1 : 0;
比这更难:
int count;
if (condition)
{
count = 1;
}
else
{
count = 0;
}
我认为三元运算符使一切都不那么复杂,比替代方案更整洁。
连锁我很好-嵌套,不是那么多。
我倾向于在 C 中更多地使用它们,因为它们是一个具有值的if语句,所以它减少了不必要的重复或变量:
x = (y < 100) ? "dog" :
(y < 150) ? "cat" :
(y < 300) ? "bar" : "baz";
而不是
if (y < 100) { x = "dog"; }
else if (y < 150) { x = "cat"; }
else if (y < 300) { x = "bar"; }
else { x = "baz"; }
在这样的作业中,我发现重构更少,更清晰。
另一方面,当我在 ruby 中工作时,我更有可能使用if...else...end
,因为它也是一个表达式。
x = if (y < 100) then "dog"
elif (y < 150) then "cat"
elif (y < 300) then "bar"
else "baz"
end
(虽然,诚然,对于这个简单的东西,我可能只是使用三元运算符。)
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(44条)