Si vous avez plusieurs contrôles de suite et ne pas besoin de conserver un court-circuit, vous pouvez essayer quelque chose comme ceci:
bool isValid = true;
isValid &= Condition1;
isValid &= Condition2;
isValid &= Condition3;
if (!isValid)
return false;
Si vous avez besoin de conserver un court-circuit, vous pouvez consolider les conditions dans une grande déclaration if. S'il y a beaucoup de conditions, cependant, je préférerais le code original, avec des retours multiples, comme un grand 'si' pourrait devenir un peu moche. Notez que, dans ce dernier cas, vous ne faites que contourner la métrique, car la branche logique est en fait la même. Si les vérifications de condition n'ont pas d'effets secondaires (et j'espère vraiment qu'elles ne le sont pas), je pense que la complexité cyclomatique élevée est une fausse alarme, car les retours multiples sont vraiment une manière plus lisible d'exprimer une logique de validation booléenne complexe.
Ceci n'est vrai que si les conditions sont toutes en série. Si elles sont réparties dans le code, avec un traitement significatif entre les vérifications, alors la métrique indique une réelle complexité (plus de branches qui doivent être testées). Dans ce cas, vous pouvez déterminer si la méthode peut être divisée logiquement en éléments plus petits et individuellement testables.
Vous pouvez l'imaginer en validant la saisie de l'utilisateur dans de nombreux champs. Certaines vérifications sont indépendantes, d'autres non.Vous avez raison de dire qu'il peut introduire de nombreuses instructions if imbriquées et du code en retrait si vous utilisez une seule instruction return. –
Je pense que la meilleure pratique pour avoir seulement une déclaration de retour vient du code C simple, où les ressources sont libérées manuellement. Dans ce cas, un seul point de retour simplifie le traitement des ressources. Dans les langues modernes avec la collecte des ordures, ce n'est plus pertinent, donc je suis totalement d'accord avec ce qui précède. –
@Anders: Garbage Collection et essayer/enfin ou en utilisant des déclarations permettent certainement un nettoyage plus élégant - Je pense que vous avez raison sur la source du mantra. Juste un autre cas de savoir * pourquoi * certaines choses sont considérées comme bonnes, et de les réévaluer par rapport à d'autres situations. Tellement important. –