Maison >développement back-end >C++ >Vérifications NULL explicites ou implicites en C/C : quelle approche est la meilleure ?

Vérifications NULL explicites ou implicites en C/C : quelle approche est la meilleure ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 13:29:401089parcourir

Explicit vs. Implicit NULL Checks in C/C  : Which Approach Is Better?

Vérification de la nullité du pointeur dans C/C

Dans une discussion de révision de code, un contributeur a préconisé l'utilisation de vérifications NULL explicites dans le format suivant :

<code class="c">int * some_ptr;
if (some_ptr == NULL) { ... }</code>

au lieu de la vérification implicite :

<code class="c">int * some_ptr;
if (some_ptr) { ... }</code>

Cela soulève la question de savoir quelle approche est préférée et pourquoi.

NULL explicite Comparaison

La comparaison explicite NULL est plus explicite dans son intention, indiquant clairement que le pointeur ne doit pas être NULL. Il protège également contre l'affectation accidentelle, car ce qui suit n'est pas valide :

<code class="c">if (some_ptr = NULL) { ... }</code>

Vérification NULL implicite

La vérification NULL implicite est plus concise et moins susceptible d'introduire des bogues. en raison d'erreurs d'affectation. Il repose sur le fait qu'une variable pointeur dans une instruction if est implicitement évaluée comme sa véracité (non NULL ou NULL).

Recommandation

En général, il est préférable d'utiliser la vérification NULL implicite pour les raisons suivantes :

  • C'est plus concis et succinct.
  • Cela ne dépend pas de la définition du symbole NULL.
  • Il peut être utilisé avec des classes C qui fournissent une conversion en bool.

Exception

Cependant, il existe des cas où la comparaison explicite NULL peut être plus approprié, par exemple lorsque :

  • Une clarté exceptionnelle est requise.
  • Le code peut être interprété par des programmeurs non-C.
  • Le code est fortement optimisé et la vérification implicite pourrait entraîner des frais généraux inutiles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn