【问题标题】:Coding with '&&' instead of 'and' operator [closed]用'&&'而不是'and'运算符编码[关闭]
【发布时间】:2014-04-13 12:54:44
【问题描述】:

我明白了,C++ 编译器支持&& 及其文本等效的and 运算符(类似于|| 运算符到or)。与特殊字符形式相比,我倾向于喜欢它的文本形式。但是,最近我不鼓励在没有任何具体推理的情况下使用这种运算符的文本形式。我不认真地认为,与特殊字符形式相比,文本形式需要更多的输入。此外,解析部分的编译器开销也不大。那么为什么主要的 C++ 社区倾向于&& 而不是and。虽然我认为,文本形式在向初学者陈述条件时要清楚得多。它还促进了更多的诗歌风格编码,而不是用乱码字符轰炸代码。

【问题讨论】:

  • 他们are functionally the same thing ...尽管正如我在回答中指出的那样,大多数人可能会觉得and 令人困惑,因为它很少使用。
  • 替代标记的主要目的是从前支持键盘缺少某些 C++ 所需字符的非英语程序员。如今,您可以使用它们来对不喜欢任何“现代东西”的过于严格的审稿人进行右值引用。
  • 两种选择都绝对没有开销
  • @user3401643 那么它与stackoverflow无关,因为您正在征求意见,并且对这类问题没有一个好的答案。 cfstackoverflow.com/help/dont-ask
  • 一旦您拥有更大的代码体,您会发现“乱码”字符实际上使代码更具可读性。它可以帮助您将操作与名称分开。像assign foo to bar 这样的代码需要你在头脑中阅读和解析代码。 foo = bar 为您提供快捷方式。 if (something and aNumber >= 0) 而不是 if (something && aNumber >= 0) 也是如此:&& 在视觉上分离条件。

标签: c++ coding-style operators


【解决方案1】:

这里只是我个人的喜好;从视觉上看,&&and 更好地分解了两个标识符。所以一目了然,精神上解析表达式要快一点。

【讨论】:

  • 我相信,如果你开始使用'and',它的用法会比'&&'更有意义
  • @user3401643:我在 25 年前开始使用 BASIC,我发现太多“散文”代码(就像 BASIC 正在尝试的那样)实际上更难快速解析。使用不能作为名称一部分的字符(类型、函数、命名空间等)就像信标一样突出,并帮助您将其分解成碎片。
  • 举个例子,试着找出错误:if color is blue and day is friday and month is february and day is monday vs. if (color == blue && day == friday && month == 3 && day == monday)。后者很容易在视觉上分为不同的部分,您可以自行解析。前者要求您记住上下文:当您点击第二个day 时,很难在不丢失阅读位置的情况下回到第一个day
  • 赋值运算符更是如此。 a |= b 显然有副作用; a or_eq b 没那么多。
  • @DarkLust:这对我来说很有意义。感谢您在这里分享您的见解。
【解决方案2】:

这是大多数主要语言中的一种标准。你必须接受它作为语法,不应该争论它应该如何。语言不是根据个人喜欢或不喜欢设计的。你会在 C/C++ 中发现许多有些令人困惑的东西,这些东西在 Python 等现代语言中得到了处理。但是 C、Java 仍然是使用最广泛的语言,所以如果你想用这些语言编程,你必须遵循它们的语法.

【讨论】:

  • 我接受这两个运算符都是有效的语法,我不相信它们会造成混淆。我只是好奇地想知道为什么一种风格与另一种风格相比如此被超级使用(这是不存在的)。
  • 您对它感到好奇的事实让您感到困惑。我想这只是大多数人的个人喜好使 && 得到更广泛的使用。
  • && 肯定被更广泛地使用,因为它首先存在。在添加替代标记之前,我们使用 C 多年,并且使用非标准化 C++ 多年。然后人们根据他们看到别人写的东西来编写代码,而不是标准所说的(这解释了为什么这么多人在 C 中使用 malloc,在它变得不必要 25 年后)
  • “你必须接受它作为语法”......但两种形式在语法上都是有效的。问题是,有什么理由比另一种更喜欢一种有效的形式吗?
  • 我从来没有说过其他形式在语法上是不正确的。是的,你几乎接受了他们的语言。当初为什么要争论这个。使用您喜欢但大多数人使用 && 的那个,因为它当然会自动将程序员的思想带入“和”条件。
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 2013-01-22
  • 2015-02-26
相关资源
最近更新 更多