Considérons une situation dans laquelle vous devez appeler des routines successives et arrêter dès que l'on renvoie une valeur qui pourrait être évaluée comme positive (vrai, objet, 1, str (1)).Est-il considéré comme incorrect d'exécuter une fonction dans une instruction conditionnelle?
Il est très tentant de le faire:
if (fruit = getOrange())
elseif (fruit = getApple())
elseif (fruit = getMango())
else fruit = new Banana();
return fruit;
Je l'aime, mais ce n'est pas un style très récurrent dans ce qui peut être considéré comme le code de production professionnelle. On risque de voir plutôt un code plus élaboré comme:
fruit = getOrange();
if(!fruit){
fruit = getApple();
if(!fruit){
fruit = getMango();
if(!fruit){
fruit = new Banana();
}
}
}
return fruit;
Selon le dogme sur les structures de base, est la forme précédente acceptable? Le recommanderiez-vous?
Edit:
Je présente mes excuses à ceux qui ont supposé que ces fonctions étaient censées être des usines ou des constructeurs. Ils ne sont pas, ils sont juste des espaces réservés. La question est plus sur la syntaxe que "l'usine". Ces fonctions pourraient aussi bien être lambda.
Cela dépend de la langue. – SLaks