Où est le meilleur endroit pour valider les paramètres d'entrée de la fonction: dans l'appelant ou dans la fonction elle-même?
Comme je voudrais améliorer mon style de codage, j'essaie de trouver les meilleures pratiques ou quelques règles pour ce problème. Quand et quoi de mieux.
Dans mes projets précédents, nous avions l'habitude de vérifier et de traiter chaque paramètre d'entrée à l'intérieur de la fonction (par exemple s'il n'est pas nul). Maintenant, j'ai lu ici dans certaines réponses et aussi dans le livre du programmeur pragmatique, que la validation du paramètre d'entrée est la responsabilité de l'appelant.
Cela signifie donc que je dois valider les paramètres d'entrée avant d'appeler la fonction. Partout la fonction est appelée. Et cela soulève une question: ne crée-t-il pas une duplication de la condition de vérification partout où la fonction est appelée?
Je ne m'intéresse pas seulement aux conditions nulles, mais à la validation des variables d'entrée (valeur négative pour sqrt
fonctionner, diviser par zéro, mauvaise combinaison d'état et de code postal, ou autre)
Existe-t-il des règles pour décider où vérifier la condition d'entrée?
Je pense à quelques arguments:
- lorsque le traitement d'une variable invalide peut varier, il est bon de la valider côté appelant (par exemple,
sqrt()
fonction - dans certains cas, je peux vouloir travailler avec un nombre complexe, donc je traite la condition dans l'appelant) - lorsque la condition de vérification est la même pour chaque appelant, il est préférable de la vérifier à l'intérieur de la fonction, pour éviter les doublons
- la validation du paramètre d'entrée dans l'appelant n'a lieu qu'une seule avant d'appeler de nombreuses fonctions avec ce paramètre. Par conséquent, la validation d'un paramètre dans chaque fonction n'est pas efficace
- la bonne solution dépend du cas particulier
J'espère que cette question n'est pas en double d'aucune autre, j'ai cherché ce problème et j'ai trouvé des questions similaires mais ils ne mentionnent pas exactement ce cas.