在最近的代码审查中,贡献者试图强制执行NULL
对指针的所有检查以下列方式执行:
int * some_ptr;
// ...
if (some_ptr == NULL)
{
// Handle null-pointer error
}
else
{
// Proceed
}
Run Code Online (Sandbox Code Playgroud)
代替
int * some_ptr;
// ...
if (some_ptr)
{
// Proceed
}
else
{
// Handle null-pointer error
}
Run Code Online (Sandbox Code Playgroud)
我同意他的方式更明确,因为它明确地说"确保这个指针不是NULL",但我会反驳说,任何正在研究这个代码的人都会明白在一个指针变量中使用指针变量if
声明是隐式检查NULL
.另外我觉得第二种方法引入类似错误的可能性较小:
if (some_ptr = NULL)
Run Code Online (Sandbox Code Playgroud)
这对于查找和调试来说只是一种绝对的痛苦.
您更喜欢哪种方式?为什么?