【问题标题】:Ternary operator: bad or good practice? [duplicate]三元运算符:坏习惯还是好习惯? [复制]
【发布时间】:2010-10-16 05:45:59
【问题描述】:

我正在寻找使用/不使用它的理由以及原创想法(在使用和替换它们时)。


复制:

相关(但未解决所提出的问题):

【问题讨论】:

  • 接下来呢? if 语句的用处?
  • 没问题,把三元换成随便什么就行了。
  • @SilentGhost 和塞缪尔:我不同意。没有人真正认为 if/then/else 是一种不好的做法,而我经常听到人们不鼓励使用三元运算符。
  • 所有编码实践都可能被滥用。从条件运算符。到 ifs、到循环和 goto。
  • 只要有机会,人们就会争论任何事情。我听说过反对使用 if/else、switch、while、return... >

标签: ternary-operator


【解决方案1】:

为了可读性,我只使用适合 80 字符行的三进制。

【讨论】:

  • 或者甚至是 40 个字符的行
【解决方案2】:

适用于 PHP 等模板语言中的短标签,例如:

<form>
<input type='radio' name='gender' value='m' <?=($gender=='m')?"checked":""?>>Male
<input type='radio' name='gender' value='f' <?=($gender=='f')?"checked":""?>>Female
</form>

适用于 javascript/jQuery 中的开关:

var el = $("#something");
$(el).is(':visible') ? $(el).hide("normal") : $(el).fadeIn("normal");

适合赋值,尤其是在特定变量名称可以采用不同类型的情况下:

$var = ($foo->isFoo()) ? 'Success!' : false;

【讨论】:

    【解决方案3】:

    条件三元运算符肯定会被过度使用,有些人觉得它很不可读。但是,我发现在大多数情况下,只要其意图明确,布尔表达式就可以非常干净。如果意图明确,最好使用具有明确名称的临时变量,其值是使用 if 语句分配的,或者使用具有良好名称且返回预期值的函数.

    【讨论】:

      【解决方案4】:

      类似于for 循环。它的用途是有道理的,但是当您尝试在其中添加更多内容时,它变得难以阅读。

      【讨论】:

        【解决方案5】:

        你说的是哪个三元运算符?

        三元运算符是接受三个参数的任何运算符。

        如果你在谈论 ? : 运算符,这称为条件运算符。就个人而言,我不能没有它了。 If-else 语句对我来说看起来很乱,尤其是在进行条件赋值时。有些人抱怨它看起来很乱,但仍然有可能(尤其是在使用 Visual Studio 或其他智能格式化 IDE 的情况下)使内容易于阅读,并且无论如何您都应该注释所有条件。

        【讨论】:

        • 它通常被称为三元运算符,因为它是唯一接受三个参数的运算符。
        • 我在说什么? : 运算符(我一直叫它三元运算符:我错了吗?)
        • +1 表示准确性。是的,它被称为条件运算符。它恰好是 a 三元运算符,但这仅描述了操作数的数量,而不是其目的/行为。如果 C# 团队每个人都引入另一个三元运算符,那么人们真的必须学习正确的名称......
        • 评论你所有的条件?真的吗?
        • 很多年前,我曾经评论过我的每一条 if 语句。我觉得它使代码更易于阅读……而且在某种程度上确实如此。当我找到更好的方法时,我改变了想法。 Robert C Martin 的Clean Code一书本质上说每个方法的名称,变量名称非常清楚,并使用小函数。应用它时,我对 cme​​ts 的需求减少了,我觉得我的代码更具可读性!
        猜你喜欢
        • 2013-07-17
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-08
        • 2010-11-14
        • 1970-01-01
        相关资源
        最近更新 更多