Тестирование на ненулевой указатель и возвращение нулевого значения в противном случае - PullRequest
3 голосов
/ 17 декабря 2009

Мне интересно, считается ли это нормальным делать что-то подобное?

if ( p_Pointer != NULL ) {
  return p_Pointer;
} else {
  return NULL;
}

Без всего остального. Дело в том, что если указатель нулевой, NULL будет возвращен, поэтому было бы бессмысленно тратить на это шаг. Однако это кажется полезным для целей отладки, потому что, если бы я проходил с отладчиком, я мог бы проверить с помощью этого теста, является ли указатель NULL или нет.

Любые комментарии или предложения относительно этой практики?

Ответы [ 4 ]

8 голосов
/ 17 декабря 2009

Это нормально, то есть в этом нет ничего плохого, хотя это не очень полезно. Если вы проходите через отладчик, вы все равно сможете отобразить значение p_Pointer.

Это похоже на

if( flag == TRUE ) {
    return TRUE;
} else {
    return FALSE;
}

, а не просто return flag;

6 голосов
/ 17 декабря 2009

Вы могли бы просто сказать:

return p_Pointer;

Потому что if statement в этом случае является излишним.

1 голос
/ 17 декабря 2009

Вместо этого использовать условную точку останова (в предполагаемой единственной строке возврата)?

1 голос
/ 17 декабря 2009

На самом деле, выглядит действительно странно. Если вы на самом деле делаете больше, или если выражение используется регулярно, то это развеяло бы подозрения.

Немного больше, это не так необычно:

    if ( p_Pointer != NULL ) {
      return p_Pointer;
    } else {
      assert(p_Pointer);
      return NULL;
    }

или

    assert(p_Pointer);
    return p_Pointer;

oder vielleicht:

    return require_valid_pointer(p_Pointer);
...