C三元股吧:要三元还是不要三元 (turnary)

关于C三元股吧的问题,在turnary中经常遇到, 我个人是ternary operator的倡导者:()?:

我个人是ternary operator的倡导者:() ? :

我确实意识到它有它的位置,但是我遇到了许多完全反对使用它的程序员,有些人经常使用它。

你对它有什么感觉?你看到过什么有趣的代码?

263

仅将其用于简单表达式

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;
156

这使得调试稍微困难,因为你不能在每个子表达式上放置断点。

83

我喜欢它们,特别是在类型安全的语言中。

我不明白这是如何:

int count = (condition) ? 1 : 0;

比这更难:

int count;
if (condition)
{
  count = 1;
}
else
{
  count = 0;
}

我认为三元运算符使一切都不那么复杂,比替代方案更整洁。

47

连锁我很好-嵌套,不是那么多。

我倾向于在 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

(虽然,诚然,对于这个简单的东西,我可能只是使用三元运算符。)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(56)
吃显卡不吃cpu的游戏:蛇在蟒蛇游戏中不吃食物(thesnakegame)
上一篇
Free pic:在共享库中混合PIC和非PIC对象
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(44条)