【问题标题】:c++ styleguide: why to have non-lvalues on the left side?c++ 风格指南:为什么左侧没有值?
【发布时间】:2012-04-09 16:54:27
【问题描述】:

在一个C++ coding style guide中, 我找到了一项特别的建议(第 41 页,建议编号 53):

左侧总是有非左值(0 == i 而不是i == 0)。

我不明白这有什么用?要坚持这种做法吗?

我不是,我不知道为什么他的做法很好。我能想到的唯一优点是可以避免误将无意分配与比较(if (foo = 0){}if (foo == 0){}

你有什么其他想法我为什么要使用它?

【问题讨论】:

  • 我不使用那个。自从我犯了 =/== 错误以来已经有很多年了。经验和技巧对我来说是比尤达条件这种尴尬的表达方式更好的对策。您决定使用或不使用应该基于您是否喜欢它,您是否觉得它对您有帮助,以及您的项目的编码标准是禁止还是要求它。
  • (0 == i) 的优势在于它可以捕获一些=== 的错误。缺点是读起来会流血。

标签: c++ coding-style


【解决方案1】:

是的,你猜对了。这是好,老Yoda condition!!!

【讨论】:

  • 大多数。惊人的。关联。曾经。喜欢“埃及括号!”
  • 哈哈! :) 我在谷歌上搜索这个,我喜欢这个行话。太糟糕了,原来的 stackoverflow 池已被删除。无论如何,尤达条件多久使用一次?是大多数程序员还是少数程序员在使用它?
  • @Tomy:纯粹是一个选择问题,你不会得到一个明确的答案。我个人只使用公司的编码指南。或者我工作的项目规定了它。
【解决方案2】:

正如你所说,有些人使用它的原因是偶尔避免输入=,而他们的意思是==

因为它只捕获某些情况,您将 lvalue 与常量或 rvalue 进行比较,并且我所知道的每个编译器都会在您这样做时发出警告错误,这样做没有什么意义。

至少对于以英语为母语的人来说,它使代码读起来就好像它是倒着写的一样;所以有人称之为“尤达条件”。就像企业风格指南中的许多规则一样,它可以追溯到处理无情的编译器比编写可读代码更重要的时代。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多