Pourquoi tant de code est comme ça ?

 

Je vois cela souvent quand les gens postent leur code.

if(a==b){
Dothis;
Dothis;
etc;
}

Ce n'est pas un problème lorsqu'on lit de courts morceaux de code d'autres personnes.

Mais quand il y a beaucoup de code, cela peut le rendre presque impossible à suivre.

Je pense que beaucoup ont des difficultés à trouver des erreurs dans leur propre code.

Pourquoi pas ?

if(a==b)
{
Dothis
Dothis
etc
}

//Or

if(a==b)
  {
  Dothis
  Dothis
  etc
  }

 

Il n'y a pas de problème avec l'ancien style ( style K & R ) (tant qu'il est indenté). Il est très utilisé dans les langages ayant ce type de syntaxe (C, Java, Perl).

C'est, par exemple, la norme Java et elle est tout à fait lisible (tant qu'elle est correctement indentée). [ Comme mql4 emprunte fortement la syntaxe du style C, je pense que mentionner ces autres langages est pertinent ].

Il devrait cependant être indenté :


if(a==b){
   Dothis;
   Dothis;
   etc;
}


Le deuxième exemple ( style Allman ) est également préféré par certains, et est généralement considéré comme plus lisible (encore une fois avec une indentation correcte).


if(a==b)
{
   Dothis;
   Dothis;
   etc;
}

Mais la méthode que vous semblez rejeter est assez populaire ailleurs (pour des raisons de lisibilité).

Votre dernier exemple ne me plaît pas du tout.

 

Le style allman est également plus facile à identifier les accolades manquantes, notamment dans les arbres complexes de type if else.

 

Le style de bracelets est une préférence des programmeurs, il n'y a pas vraiment de bonne ou de mauvaise méthode. Le style K&R est le meilleur ;-). Pourquoi prendre une ligne supplémentaire pour une accolade ouvrante .... ? Ce qui m'importe vraiment, c'est de savoir à quel if{statement} elle appartient. Par exemple, ce qui semble le mieux et le plus facile à comprendre.

if(.............................)
    {
    if(.............................)
        {
        if(.............................)
            {
            if(.............................)
                {
                if(.............................)
                    {
                    if(.............................)
                        {
                        if(.............................)
                            {
                            if(.............................)
                                {
                                if(.............................)
                                    {
                                    if(.............................)
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

Ou cette version :

if(.............................){
    if(.............................){
        if(.............................){
            if(.............................){
                if(.............................){
                    if(.............................){
                        if(.............................){
                            if(.............................){
                                if(.............................){
                                    if(.............................){
}   }   }   }   }   }   }   }   }   }

Et encore mieux.

if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
La dernière version me semble plus naturelle que la façon dont j'écris dans la vie réelle. Ligne par ligne.
 

Je le fais comme ça :

if(.............................)
{if(.............................)
 {if(.............................)
  {if(.............................)
   {if(.............................)
    {if(.............................)
     {if(.............................)
      {if(.............................)
       {if(.............................)
        {if(.............................)
}}}}}}}}}
 

J'aime cette discussion.

Et qu'en est-il de la préférence dans le codage de l'instruction else . Je préfère le premier exemple, bien que certains éditeurs ne puissent pas plier/déplier de tels blocs. Le deuxième est un compromis. Le troisième est encore plus cohérent, mais illisible.

if (cond) {
   command;
} else if (cond) {
   command;
} else {
   command;
}

ou

if (cond) {
   command;
}
else if (cond) {
   command;
} 
else {
   command;
}

ou

if (cond) {
   command;
} 
else {
   if (cond) {
      command;
   }   
   else {
      command;
   }  
}
 
Dans une certaine mesure, cela n'a pas d'importance, la principale chose qui compte est la cohérence de l'application du style choisi... nous avons tous nos propres préférences, bien entendu.
 

Je n'utilise plus beaucoup else. Il y a eu un problème où j'ai été obligé d'utiliser else il y a quelque temps (je ne me souviens plus du problème). Quand j'ai utilisé else, cela a donné quelque chose comme ça.

if (cond) { command; } else 
if (cond) { command; } else {
   command;
}

Maintenant, cependant, mon premier enseignement sur le codage de quelque chose comme ci-dessus serait.

if( cond ){ command; return; }
if( cond ){ command; return; }
command;

Oui, je vais transformer un code de trois lignes en une fonction 8)))

 
SDC:

je fais si autre chose comme ça

Personnellement, je trouve cela aussi clair que de la boue.
 
RaptorUK: Personnellement, je trouve cela aussi clair que de la boue.
Ça me fait mal aux yeux :{
 
RaptorUK:
Dans une certaine mesure, cela n'a pas d'importance, la principale chose qui compte est la cohérence de l'application du style choisi... nous avons tous nos propres préférences, bien sûr.

Je suis d'accord avec Raptor. Sujet à propos de rien. Je suis beaucoup plus frustré quand les gens postent leur code ici sans utiliser le SRC. La façon dont ils codent leur programme leur appartient, à moins qu'ils ne demandent de l'aide.