Page 2 sur 2
Posté : 12 avr. 2008 23:22
par real34
Mick@el a écrit :
Code : Tout sélectionner
int main(void)
{
if (!machin())
goto err;
// Blabla
if (!truc())
goto err;
// Blabla
if (!bidule())
goto err;
printf("Ca marche !\n");
return 0;
err:
printf("Oups !\n");
return -1;
}
On ne va pas troller sur le goto ... mais dans les langages récents les exceptions sont utilisées pour faire ce genre de choses
Le goto sert juste à revenir au niveau ASM dans le cadre d'optimisation d'un programme ... dans la plupart des cas les instructions ifThenElse/for/while reviennent au même, la clarté et facilité de compréhension en plus ! Dans des cas très précis le goto peut être utilisé, mais c'est vraiment des cas très rare. Du coup, je pense sincèrement que ne jamais programmer en utilisant des goto (je vous jure qu'on peut y arriver !

) est une très bonne habitude qui aboutit dans 99% des cas à un code plus propre et maintenable ...
Ici par exemple pour un traitement des erreurs propres et sans utiliser les exceptions, on pourrait faire :
Code : Tout sélectionner
int main(void)
{
int err = 0;
if (!machin()){err = 1;} // On peut remplacer 1 par une constante #define ;)
else {
// Blabla
if (!truc()){err = 2;}
else {
// Blabla
if (!bidule()){err=3;}
else{
printf("Ca marche !\n");
}
}
}
// Ici le traitement des erreurs
switch err
case 1 : /* blabla */ break;
case 2 : /* blabla */ break;
case 3 : /* blabla */ break;
default : return 0;
return -1;
}
Posté : 13 avr. 2008 01:45
par Mick@el
real34 a écrit :Mick@el a écrit :
Code : Tout sélectionner
int main(void)
{
if (!machin())
goto err;
// Blabla
if (!truc())
goto err;
// Blabla
if (!bidule())
goto err;
printf("Ca marche !\n");
return 0;
err:
printf("Oups !\n");
return -1;
}
On ne va pas troller sur le goto ... mais dans les langages récents les exceptions sont utilisées pour faire ce genre de choses
Le goto sert juste à revenir au niveau ASM dans le cadre d'optimisation d'un programme ... dans la plupart des cas les instructions ifThenElse/for/while reviennent au même, la clarté et facilité de compréhension en plus ! Dans des cas très précis le goto peut être utilisé, mais c'est vraiment des cas très rare. Du coup, je pense sincèrement que ne jamais programmer en utilisant des goto (je vous jure qu'on peut y arriver !

) est une très bonne habitude qui aboutit dans 99% des cas à un code plus propre et maintenable ...
Ici par exemple pour un traitement des erreurs propres et sans utiliser les exceptions, on pourrait faire :
Code : Tout sélectionner
int main(void)
{
int err = 0;
if (!machin()){err = 1;} // On peut remplacer 1 par une constante #define ;)
else {
// Blabla
if (!truc()){err = 2;}
else {
// Blabla
if (!bidule()){err=3;}
else{
printf("Ca marche !\n");
}
}
}
// Ici le traitement des erreurs
switch err
case 1 : /* blabla */ break;
case 2 : /* blabla */ break;
case 3 : /* blabla */ break;
default : return 0;
return -1;
}
Heu, attends, t'as vu le niveau d'indentation que ça fait ?
Et je te parles pas des if (...) { } c'est encore pire
(et pour les exceptions en C ...)
Posté : 13 avr. 2008 18:02
par Mick@el
J'utilise pas argc et argv, donc autant pas les mettre
Posté : 14 avr. 2008 01:14
par GregLand
Dis donc... avant de te lancer dans la programmation, apprends a utiliser Google...
Dans le champ de recherche, tapes :
Ce sera déjà un bon début
