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 Prowlnullptrが言及したように、タイプ :を使用することで、これのより明確なバージョンが C++11 に登場しましたif (x == nullptr)。C++11 アプリケーションを作成している場合、チームのすべてのメンバーがこの表記法を規則として使用する必要があります。

Null Object Pattern最後に、このチェックがアプリケーションの特定の習慣に関係する場合に備えて、コード内のあらゆる場所でこのチェックを行うことを回避するなど、かなりよく使用されるさまざまなパターンが存在します。

于 2013-04-11T14:02:11.487 に答える