首页 文章

三元(条件)运算符和样式

提问于
浏览
5

如果您首先讨厌三元条件运算符,则无需回复;)

我经常看到这与分配表达式一起使用,如:

var foo = (some_condition) ? then_code : else_code;

但是,我想用它来代替简单的代码,例如:

if(some_condition) {
  do_something_simple;
} else {
  do_something_else;
}

而是做:

(some_condition) ? do_something_simple : do_something_else;

我可能会在JavaScript中这样做 . 在上面它返回undefined,因此它不需要赋值 . 我喜欢节省的空间,但是想知道人们对这种用途的看法,同样,我通常只看到三元用于作业 .

编辑:我看到答案暗指“隐藏意图” . 虽然在表达式中经常使用,但是如何在表达式中隐藏意图呢?特别是在动态语言中,人们可能会看到遍布各地的三元运算符?

4 回答

  • 2

    条件运算符通常应该用在表达式 - 值生成表达式中 - 并且最好不要用作'if / then / else'语句的替代 . 偶尔使用,没有特别的问题;系统地使用,我认为这将隐藏读者的代码意图 .

  • 0

    这是我个人的偏好:

    在这种情况下,我认为它属于思考"code is written for people to read, not for machine" . 因为大多数人不会这样写,所以它可能会导致混乱,增加理解代码的时间,并可能引入错误 - 如果有人看到并想到,没有任何事情的任务,必须是"left over"代码并让我们删除它,然后代码清理成为bug介绍 .


    引用自:程序应该写给人们阅读,并且只是偶然为机器执行 .

    • 来自Abelson和Sussman的“计算机程序的结构和解释”

    查理马丁说Is Code For Computers or for People?

    如果计算机没有运行它,它就会坏掉 . 如果人们无法阅读它,它将被打破 . 不久 .

    我认为是的,代码是为机器编写的,以便理解(并正确运行),对人们来说也很重要 . (除非有意识地难以理解以获得咨询费,但他们可能会在以后或下一个项目中雇用其他人,或故意难以理解为了工作保障,如果人们无法理解您的代码,他们可以'你担心其他人无法维护代码...也许有一个方面有两个方面......我看到越来越多的案例就像那样)

  • 3

    问题很愚蠢,因为你在谈论允许奇怪事情的JavaScript .

    在经典编程语言中,三元条件运算符要求两种情况都是表达式而不是语句 . 通过这种方式,您可以使用它根据布尔条件在两个表达式之间进行选择,但不能作为普通的if / else分支 .

    在像JavaScript这样的语言中,这种差异消失了,因为语句实际上返回一个值,因此您可以使用三元组并且只丢弃语句返回的未定义值 .

    从我的角度来看,更多地依赖于其他编程语言,如果你节省空间,这也会导致混淆,但我认为这是一个偏好问题 . 只是不要太习惯它,因为只有少数编程语言允许这种三元运算符的使用!

  • 0

    三元运算符适用于成熟/稳定的程序,但不适用于不断变化的环境 . 假设您必须向任何分支添加一些额外的代码 - 当您使用if / then / else语法时,它会更容易 .

相关问题