Zerosquare (./10) :
Je connais trois façons de faire ça :
- les if() imbriqués, mais ça devient vite illisible. Certains diront que si tu as plus de 5/6 étapes, il faut de toute façon splitter en plusieurs fonctions, mais je ne suis pas d'accord (pour moi, c'est contreproductif de créer des fonctions qui ne sont appelées qu'une fois et qui sont indissociables d'une autre fonction : ça éparpille le code, et comme on ne peut pas partager de variables locales on doit les passer en paramètres et c'est lourd)

- utiliser une ou des variables de contrôle (par exemple, un booléen isOK qui indique s'il faut que l'exécution continue). Ça évite les goto et les points de sortie multiples, qui sont interdits dans certaines normes, mais je trouve ça dangereux : on a vite fait d'oublier de mettre à jour ou de tester ces variables annexes.

- la solution à base de goto, que je privilégie. Ça fait hurler les intégristes, mais pour moi c'est le moins risqué et le plus lisible si c'est bien fait.

C'est pour ça que je parlais d'un équivalent de atexit() pour les fonctions, ça permettrait d'éviter tout ce bazar crade et de pouvoir faire un return() où on veut tout en étant certain que le "nettoyage" sera effectué.
Hum je me demande si avec quelques macros bien pensée on ne pourrais pas...
Brunni: Oui c'est ce que je dit, pour quelques tests, c'est peut etre plus simple un if, des que tu depasse un certain nombre dans une fonction, c'est vite le bordel..
Et aucune solution n'est mauvaise, du moment que le code est lisible, mais j'ai tendance a penser la meme chose que Zero (surtout sur les gens qui te disent il faut spliter la fonction

)