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

fdev9 20 Messages postés samedi 25 novembre 2000Date d'inscription 26 juin 2006 Dernière intervention - 27 avril 2006 à 16:27 - Dernière réponse : bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention
- 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 

9 réponses

Répondre au sujet
dgouttegattat 129 Messages postés mardi 22 novembre 2005Date d'inscription 30 décembre 2007 Dernière intervention - 27 avril 2006 à 16:35
+2
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de dgouttegattat
fdev9 20 Messages postés samedi 25 novembre 2000Date d'inscription 26 juin 2006 Dernière intervention - 27 avril 2006 à 16:45
0
Utile
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
bernie666 427 Messages postés mercredi 1 octobre 2003Date d'inscription 29 janvier 2008 Dernière intervention - 27 avril 2006 à 23:26
0
Utile
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
cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 28 avril 2006 à 10:01
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 28 avril 2006 à 10:19
0
Utile
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
dgouttegattat 129 Messages postés mardi 22 novembre 2005Date d'inscription 30 décembre 2007 Dernière intervention - 28 avril 2006 à 12:03
0
Utile
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
cs_drahcir 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 28 avril 2006 à 12:06
0
Utile
C'est vrai, mais quand c'est possible, mieux vaut utiliser un switch case.
Commenter la réponse de cs_drahcir
fdev9 20 Messages postés samedi 25 novembre 2000Date d'inscription 26 juin 2006 Dernière intervention - 28 avril 2006 à 13:11
0
Utile
"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
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 1 mai 2006 à 15:38
0
Utile
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.