¿Por qué hay tanto código así?

 

Lo veo mucho cuando la gente publica su código.

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

Ahora bien, esto no es un problema cuando se leen trozos cortos de código de otras personas.

Pero cuando hay mucho código, puede hacer que sea casi imposible de seguir.

Creo que muchos tendrían dificultades para encontrar errores en su propio código.

¿Por qué no?

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

//Or

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

 

No hay nada de malo en el estilo anterior ( estilo K & R ) (siempre que esté sangrado). Se utiliza mucho en lenguajes con este tipo de sintaxis (C, Java, Perl) .

Es, por ejemplo, el estándar de Java y bastante legible IMO (siempre y cuando la sangría sea correcta). [Como mql4 toma prestado mucho de la sintaxis del estilo C creo que mencionar estos otros lenguajes es relevante]

Sin embargo, debería estar indentado:


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


El segundo ejemplo (estilo Allman ) también es preferido por algunos, y generalmente se acepta que es más legible (de nuevo con una sangría correcta)


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

pero el método que parece descartar es bastante popular en otros lugares (por razones de legibilidad)

Tu último ejemplo no me gusta en absoluto.

 

El estilo allman también es más fácil de identificar las llaves que faltan, especialmente en los árboles complejos si no.

 

El estilo de las abrazaderas es una preferencia de los programadores, realmente no hay un método correcto o incorrecto Imo. El estilo K&R es el mejor ;-). ¿Por qué tomar una línea extra para un corchete de apertura .... lo que realmente me importa es a qué if{statement} pertenece. Ejemplo lo que se ve mejor y más fácil de entender.

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

O esta versión:

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

Y aún mejor.

if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
En mi opinión, la última versión se parece más a la forma en que escribo en la vida real. Línea por línea.
 

Lo hago así:

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

Me gusta la discusión.

Y qué hay de la preferencia en la codificación de la declaración else . Prefiero el primer ejemplo, aunque algunos editores no pueden plegar/desplegar dichos bloques. El segundo es un compromiso. El tercero es aún más consistente, pero ilegible.

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

o

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

o

if (cond) {
   command;
} 
else {
   if (cond) {
      command;
   }   
   else {
      command;
   }  
}
 
Hasta cierto punto no importa, lo principal es la coherencia en la aplicación del estilo elegido... todos tenemos nuestras propias preferencias, por supuesto
 

Ya no uso mucho else. Hubo un problema en el que me vi obligado a usar else hace un tiempo (no recuerdo el problema). Cuando usé else, fue algo así.

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

Ahora sin embargo mi primera enseñanza al codificar algo como lo anterior sería.

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

Sí, voy a convertir un código de tres líneas en una función 8)))

 
SDC:

hago si más como esto

Personalmente lo encuentro tan claro como el barro
 
RaptorUK: Personalmente lo encuentro tan claro como el barro
Me duele la vista :{
 
RaptorUK:
Hasta cierto punto no importa, lo principal es la coherencia en la aplicación del estilo elegido... todos tenemos nuestras propias preferencias, por supuesto

Estoy de acuerdo con Raptor. Tema sobre nada. Me frustra mucho más cuando la gente publica su código aquí sin usar SRC. Como codifiquen su programa es cosa de ellos, a no ser que vayan a pedir ayuda.