在这种情况下是否需要检查
is check required in this situation
在 C++ 中,我阅读了 "check return value in If control statement" 的编码指南
喜欢,
if(TRUE == fun1())
{
//Statements
}
当 "fun1" returns 为真时,在 "if" 语句内部将与“真”进行比较。
有必要对外比较吗?
这是一种好的做法还是这种编码方式会降低性能?
取决于fun1
的return类型和TRUE
的类型。
如果 TRUE
是 true
和 fun1
returns bool
,它不会降低性能,因为它完全符合 if
自己做。所以这只是无操作的混乱。
对于其他类型,它看起来很危险,甚至可能是错误的。想象一个遗留风格的函数,它 returns int
并在失败时记录为 return 0,在成功时记录为非零值(很多 C 标准库函数都是这样的) .然后,假设 TRUE
是 true
或 1
。在这种情况下,函数 returning 2(完全有效的非零值)实际上 失败 条件!
所以除非类型和值如此变态以至于 TRUE
是 0
(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())
{
}
对于现代编译器和处理器,没有真正的速度影响。
在 C++ 中,我阅读了 "check return value in If control statement" 的编码指南 喜欢,
if(TRUE == fun1())
{
//Statements
}
当 "fun1" returns 为真时,在 "if" 语句内部将与“真”进行比较。 有必要对外比较吗? 这是一种好的做法还是这种编码方式会降低性能?
取决于fun1
的return类型和TRUE
的类型。
如果 TRUE
是 true
和 fun1
returns bool
,它不会降低性能,因为它完全符合 if
自己做。所以这只是无操作的混乱。
对于其他类型,它看起来很危险,甚至可能是错误的。想象一个遗留风格的函数,它 returns int
并在失败时记录为 return 0,在成功时记录为非零值(很多 C 标准库函数都是这样的) .然后,假设 TRUE
是 true
或 1
。在这种情况下,函数 returning 2(完全有效的非零值)实际上 失败 条件!
所以除非类型和值如此变态以至于 TRUE
是 0
(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())
{
}
对于现代编译器和处理器,没有真正的速度影响。