0

这是 C 和 C++ 的风格问题。你比较喜欢哪个

void f() {
  const char * x = g();
  if (x == NULL) {
    //process error
  }
  // continue function
}

或这个:

void f() {
  const char * x = g();
  if (! x) {
    //process error
  }
  // continue function
}

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

4

1 回答 1

5

这主要取决于您的工作组中采用的约定。

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

正如@Andy Prowl提到的那样,C++11 中通过使用nullptrtype :出现了一个更清晰的版本if (x == nullptr)。如果您正在编写 C++11 应用程序,那么团队中的每个成员都应该使用这种表示法作为惯例。

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

于 2013-04-11T14:02:11.487 回答