有几个人支持第二种。我不同意他们的看法。虽然(显然)最初在第一个中与=
vs.有一个小问题==
,但我认为这是一个小问题。
一个更大的问题是人们(尤其是如果他们很匆忙)跳过错误检查太常见了——if (whatever == -1)
完全忽略了错误检查,通常是基于他们正在处理的东西是快速的、一次性的理论代码和检查错误并不是真正需要的。这是一个非常坏的习惯;我几乎可以保证每个阅读这篇文章的人都看过像这样跳过错误检查的真实代码,即使它真的,真的应该有它。
在这样的代码中,尝试打开文件并检查是否存在错误应该是密不可分的。将两者放在同一个语句中反映了正确的意图。将两者分开是完全错误的——在任何时候,无论出于何种原因,都不应该以任何方式将它们分开。这应该被编码为一个单一的操作,因为它应该是一个单一的操作。它应该始终被认为和编码为一个单一的操作。
在我看来,这样做的借口是相当薄弱的。现实情况是,任何使用 C 语言的人都需要能够阅读结合了赋值和条件测试的代码。举一个明显的例子,一个循环像while ((ch=getchar()) != EOF)
几乎一样需要编写为一个组合的赋值和测试——尝试EOF
单独测试通常会导致代码不能正常工作,如果你让它正常工作,代码要复杂得多。
同样,对于-
vs.的问题==
。由于我一开始没有看到缺陷,我不确定将两者分开多少可以避免问题,但我的直接猜测是它可能几乎没有任何区别。当应该是一个条件只包含一个赋值时会警告你的编译器已经存在了很多年(例如 gcc)。在大多数情况下,症状几乎是立即显而易见的——简而言之,你在这篇文章的一部分中犯了一个特定的错字而不是另一部分的事实并不能证明(甚至诚实地表明)关于亲属的任何事情两人的难处。
基于这种证据,我显然认为“不”比“立即”更难输入,因为我只是在没有问题的情况下输入“立即”,但之前必须更正“不”(两次,不少于)它就在上一句中出现了。我很确定如果我们按错误输入的频率来计算,“the”是英语中最难的单词。