Je trouve cela très utile dans les chaînes d'actions qui impliquent souvent la détection d'erreurs, etc.
if ((rc = first_check(arg1, arg2)) != 0)
{
report error based on rc
}
else if ((rc = second_check(arg2, arg3)) != 0)
{
report error based on new rc
}
else if ((rc = third_check(arg3, arg4)) != 0)
{
report error based on new rc
}
else
{
do what you really wanted to do
}
L'alternative (ne pas utiliser l'affectation dans l'état) est:
rc = first_check(arg1, arg2);
if (rc != 0)
{
report error based on rc
}
else
{
rc = second_check(arg2, arg3);
if (rc != 0)
{
report error based on new rc
}
else
{
rc = third_check(arg3, arg4);
if (rc != 0)
{
report error based on new rc
}
else
{
do what you really wanted to do
}
}
}
Avec vérification d'erreur prolongée, l'alternative peut ruisseler l'ERS de la page alors que la cession en conditionnelle Version ne fait pas ça.
Je suis d'accord - mais j'écrirais: while ((var = GetNext())! = 0) {...} sans y penser à deux fois, en partie parce que GCC se plaint si je ne le fais pas avec mes options de compilation par défaut . –
True. En supposant que vous utilisez un langage qui supporte les déclarations en boucle, et que vous n'utilisez pas déjà var en dehors de la boucle. – Gerald
dans certaines langues, comme ANSI C, les règles de portée ne permettent pas cette approche, @KerrekSB – wirrbel