在这种情况下是否需要检查

is check required in this situation

在 C++ 中,我阅读了 "check return value in If control statement" 的编码指南 喜欢,

if(TRUE == fun1())
{
//Statements
}

当 "fun1" returns 为真时,在 "if" 语句内部将与“真”进行比较。 有必要对外比较吗? 这是一种好的做法还是这种编码方式会降低性能?

取决于fun1的return类型和TRUE的类型。

如果 TRUEtruefun1 returns bool,它不会降低性能,因为它完全符合 if 自己做。所以这只是无操作的混乱。

对于其他类型,它看起来很危险,甚至可能是错误的。想象一个遗留风格的函数,它 returns int 并在失败时记录为 return 0,在成功时记录为非零值(很多 C 标准库函数都是这样的) .然后,假设 TRUEtrue1。在这种情况下,函数 returning 2(完全有效的非零值)实际上 失败 条件!

所以除非类型和值如此变态以至于 TRUE0(MFC 不是这种情况),否则我会说它实际上是 有害的 与之比较。

与 TRUE 进行比较从来都不是一个好主意。

如果 fun1 return 是一个 BOOL,那么它的值实际上是一个 int 并且可以是任何 int 值。 TRUE 只是 1,FALSE 是 0。但是 int 有很多其他值。比较FALSE总是省的!

在很多情况下。函数 return "something" 并且这应该意味着 "TRUE" (!=0) 只要它不同于 0!

只要你有一个布尔值 return,你就可以比较 true 和 false,它总是有效的。

这取决于样式,但我从不使用表达式来比较 TRUE 值(意思不是 0,不是 false)。我总是在 if 语句中写没有运算符的条件。它对我有意义 "If fun1 is something" 或 "If fun1 succeeded"

if (fun1())
{
//Statements
}

在我们公司,这是正常的编码风格。如果我们想检查相反的情况。 "If fun1 fails"

if (!fun1())
{
}

对于现代编译器和处理器,没有真正的速度影响。