De temps en temps, j'utilise un while(1)
bloc pour aplatir une succession d' if..else
aller hors de proportion. Il va le long de ces lignes.
Au lieu de faire:
// process
if (success) {
// process
if (success) {
//process
if (success) {
// etc
}
}
}
Je fais:
while (1) {
// process
if (!success) break;
// process
if (!success) break;
// process
if (!success) break;
// etc
break;
}
Je suis un peu agacé par l'implicite aller à la fin de l' while
. Pourrais-je sortir avec un maigre construire (c'est à dire pas break
à la fin)?
J'ai pu le commerce de la finale, break
avec une variable (ou de registre?). Ce n'est pas exactement la plus maigre ou plus claire.
int once = 1;
while (once--) {
// process
if (!success) break;
// process
if (!success) break;
// process
if (!success) break;
// etc
}
Une boucle serait un peu mieux (C99):
for (int once = 1 ; once--; once) {
// process
if (!success) break;
// process
if (!success) break;
// process
if (!success) break;
// etc
}
J'ai pensé à l'aide d'un interrupteur cas. Il ne ressemble pas beaucoup mieux , mais il pourrait fonctionner.
switch (1) { default:
// process
if (!success) break;
// process
if (!success) break;
// process
if (!success) break;
// etc
}
Dans ce cas particulier, le concept d'une étiquette semble imbattable.
// process
if (!success) goto end;
// process
if (!success) goto end;
// process
if (!success) goto end;
// etc
end:
Quelle autre approche les gars, vous ne connaissez/utilisez?