If/elseif/else ou if imbriqués ? [Résolu]

Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Dernière intervention
26 juin 2006
- - Dernière réponse : bubbathemaster
Messages postés
342
Date d'inscription
dimanche 26 janvier 2003
Dernière intervention
25 mars 2009
- 1 mai 2006 à 15:38
Bonjour,

J'ai une petite question concernant la structure if/elseif/else.

Je suis adepte du codage suivant :

if ( cas1.. )
{
...
}
else if ( cas2 ... )
{
...
}
...
else
{
...
}

Mon ami est adepte lui du codage suivant :

if (cas1 ...)
{
  ...
}
else
{
   if ( cas2 ... )
  {
   ...
  }
  ....
     else
    {
        ....
    }
}

Ma question est très simple :  La différence entre ces deux codages est elle uniquement au niveau de l'affichage (indentation du code, lisibilité) ou ces deux manières de coder ont elles des conséquences à l'execution (performance, etc...) ?

Merci d'avance.
fd.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Dernière intervention
30 décembre 2007
2
Merci
Bonjour fdev9,
J'ai fait un test rapide avec deux méthodes utilisant les deux façons de coder, et il apparaît que le code MSIL généré pour les deux méthodes est strictement identique. Donc effectivement, la différence entre ces deux manières de coder la même chose n'est qu'une question de présentation du code.

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de dgouttegattat
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Dernière intervention
26 juin 2006
0
Merci
Merci pour cette réponse rapide dgouttegattat.

Le code MSIL est identique, le compilateur fait donc bien son travail lors de la génération (heuresement)

Bon, bah je vais essayer d'aller convaincre mon ami que le temps de compilation est plus rapide avec un elseif lol

Plus sérieusement, vu qu'il ne s'agit que d'une question de présentation, à moins qu'il existe des conventions qui préconisent l'utilisation du elseif, je crois bien que je vais devoir me faire aux if imbriqués de mon ami :)

Chacun ses préférences donc.
Commenter la réponse de fdev9
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Dernière intervention
29 janvier 2008
0
Merci
Oui chacun ces preferences :)
Mais je trouve l'utilisation de if imbriqué plus lisible personnelement ...

Apres ... ben soit il faut ce référencer aux "naming convention" ou a la chartre de ton entreprise ... et apres ben c'est plus question de preferences :(
Commenter la réponse de bernie666
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
0
Merci
salut,

puisque vous parlez de performance, le switch ...case ne serait-il pas plus rapide??? Personellement, je trouve ça beaucoup plus lisible que des if.. else imbriqués.
Commenter la réponse de cs_drahcir
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
0
Merci
Salut,
Si mes souvenirs sont bons, le switch est plus rapide. Le problème, c'est qu'il ne peut pas remplacer tout le temps un elseif (étant donné que le switch ne marche que sur une variable).

<hr>
[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever /infomsg/auteurdetail.aspx?ID=13319/infomsg/auteurdetail.aspx?ID=13319/infomsg/auteurdetail.aspx?ID=13319/infomsg/auteurdetail.aspx?ID=13319/auteurdetail.aspx?ID=13319/auteurdetail.aspx?ID=13319/auteurdetail.aspx?ID=13319/auteurdetail.aspx?ID=13319/auteurdetail.aspx?ID=13319
Commenter la réponse de cs_Bidou
Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Dernière intervention
30 décembre 2007
0
Merci
Salut,
Le code MSIL généré pour une méthode utilisant un switch..case est plus long que pour une méthode faisant exactement la même chose mais avec des else..if (imbriqués ou non).


Toutefois, je ne suis pas sûr que la taille du code MSIL soit le seul critère pour juger de la performance d'un code. Je me souviens vaguement avoir lu dans un livre consacré à l'assembleur quelque chose du genre: "En assembleur, plus le code est long, plus ça va vite..."
Commenter la réponse de dgouttegattat
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
0
Merci
C'est vrai, mais quand c'est possible, mieux vaut utiliser un switch case.
Commenter la réponse de cs_drahcir
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Dernière intervention
26 juin 2006
0
Merci
"Le problème, c'est qu'il ne peut pas remplacer tout le temps un elseif (étant donné que le switch ne marche que sur une variable)."

Ma question portée bien pour des cas où le switch n'est pas possible.

Merci pour vos réponses.
Commenter la réponse de fdev9
Messages postés
342
Date d'inscription
dimanche 26 janvier 2003
Dernière intervention
25 mars 2009
0
Merci
Personnellement, j'utilise la méthode de ton ami car elle me parait plus lisible. La séparation des blocks est claire.
Maintenant, pour l'optimisation... Je suis pas sur que de gagner 1 nanoseconde dans une application .NET soit vraiment d'actualité; à moins de faire du DirectX managed =)
Commenter la réponse de bubbathemaster

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.