最佳实践:如何在C/C++中检查NULL返回值

Hal*_*ary 0 c c++ null

这是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)

?前者更清晰,但后者则不那么冗长.

Hal*_*oum 5

它主要取决于您工作组中采用的惯例.

由于!= NULL表单对于习惯使用它的开发人员来说可能更清楚,对于习惯NULL使用布尔形式检查值的开发人员来说,反之亦然.

正如@Andy Prowl所提到的那样,通过使用以下nullptr类型,在C++ 11中使用这个更加清晰的版本:if (x == nullptr).如果您正在编写C++ 11应用程序,那么这个表示法应该被团队的每个成员用作约定.

最后,存在几种非常常用的模式,例如Null Object Pattern避免在代码中的任何地方进行检查,以防此检查涉及应用程序的特定习惯.