在最近的一次代码审查中,一位贡献者试图强制所有NULL
对指针的检查都按以下方式执行:
int * some_ptr;
// ...
if (some_ptr == NULL)
{
// Handle null-pointer error
}
else
{
// Proceed
}
而不是
int * some_ptr;
// ...
if (some_ptr)
{
// Proceed
}
else
{
// Handle null-pointer error
}
我同意他的方法更清楚一些,因为它明确地说“确保此指针不为空”,但我要反驳说,任何使用此代码的人都会理解,在if
语句中使用指针变量是隐式地检查NULL
。此外,我觉得第二种方法引入同类错误的可能性较小:
if (some_ptr = NULL)
这对于查找和调试来说绝对是一件痛苦的事情。
你更喜欢哪种方式,为什么?