这是C和C++的样式问题.你比较喜欢哪个
void f() {
const char * x = g();
if (x == NULL) {
//process error
}
// continue function
}
Run Code Online (Sandbox Code Playgroud)
或这个:
void f() {
const char * x = g();
if (! x) {
//process error
}
// continue function
}
Run Code Online (Sandbox Code Playgroud)
?前者更清晰,但后者则不那么冗长.
它主要取决于您工作组中采用的惯例.
由于!= NULL
表单对于习惯使用它的开发人员来说可能更清楚,对于习惯NULL
使用布尔形式检查值的开发人员来说,反之亦然.
正如@Andy Prowl所提到的那样,通过使用以下nullptr
类型,在C++ 11中使用这个更加清晰的版本:if (x == nullptr)
.如果您正在编写C++ 11应用程序,那么这个表示法应该被团队的每个成员用作约定.
最后,存在几种非常常用的模式,例如Null Object Pattern
避免在代码中的任何地方进行检查,以防此检查涉及应用程序的特定习惯.