una solo radiador purgar frenos disco con como botella bomba coding-style if-statement conditional

coding-style - radiador - como purgar frenos solo



¿Cómo sangrar condicionales largos para declaraciones ''if''? (7)

Mi pregunta se relaciona con esta pregunta anterior , pero las soluciones ofrecidas no abordan el problema que he descrito a continuación. Después de una búsqueda en Google, no he encontrado ninguna guía de estilo de código que aborde el problema específico de condicionales largos en una declaración if como esta.

if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)){ doSomething(); }else{ doSomethingElse(); }

O:

if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1) ){ doSomething(); }else{ doSomethingElse(); }

El problema que tengo con estos dos estilos es que hace que sea difícil para mi ojo encontrar el código en el bloque verdadero y separarlo de los condicionales, o es demasiado difícil para el ojo determinar la siguiente línea correcta después de un condicional largo. una sola línea, especialmente si la instrucción if ya está sangrada unas cuantas pestañas dentro de una función u otra instrucción if.

¿Sería preferible hacer algo como esto?

if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)){ doSomething(); }else{ doSomethingElse(); }

o este estilo sería mejor para sangrar cada nueva condición en cualquiera de estas formas:

if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)){ doSomething(); }else{ doSomethingElse(); } if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1) ){ doSomething(); }else{ doSomethingElse(); }

¿Alguien tiene una guía de estilo de codificación (tal vez una política de estilo de codificación de la compañía) que aborde este problema de una manera diferente o mejor de la que he propuesto? ¿Cuál es preferible y puede encontrar algún inconveniente o ventaja en las soluciones que he mencionado?


¿Qué tal algo como esto?

bool isValid = isNull(value1) || isToLong(value1) || hasBadFormat(valule1); if( isValid ) { doSomething(); } else { doSomethingElse(); }

El condicional se traslada a otra línea, lo que podría facilitar la lectura.


Esta es la alternativa que prefiero:

if( isValid = isNull(value1) || isToLong(value1) || hasBadFormat(valule1) ) { doSomething(); } else { doSomethingElse(); }


La solución obvia es mover la abrazadera abierta a la siguiente línea, ¡tal como Dios lo propuso!

</flamebait>


Probablemente soy el único que lo hace de esta manera. Se llama el estilo de Horstmann, pero lo hago de manera ligeramente diferente.

if (bool) // comment { dothis; andthis; } else if (bool) // comment { dothis; andthis; } else // comment { dothis; andthis; }


Realmente depende de la preferencia y la convención de las personas con las que trabajas, pero las dos primeras son las dos formas más comunes que he visto. Tiendo a preferir mover el condicional a líneas múltiples solo si es tan largo que requiere desplazamiento de izquierda a derecha en mi ide.

Así es como lo escribiría:

if(isNull(value1) || isToLong(value1) || hasBadFormat(valule1)) { doSomething(); } else { doSomethingElse(); }

A menos que ese condicional no sea lo suficientemente largo como para obligarme a desplazarme para verlo todo. Si no, yo haría esto:

if(isNull(value1) || isToLong(value1) || hasBadFormat(valule1)) { doSomething(); } else { doSomethingElse(); }

Y en este caso, como parece lo suficientemente corto, haría lo último.


Tiendo a poner a los operadores al inicio de la línea para que todos estén arriba.

Entonces, aquí hay una sugerencia:

if(isNull(value1) || isTooLong(value1) || hasBadFormat(valule1)) { doSomething(); } /* if */ else { doSomethingElse(); } /* else */

Aquí está otro:

if(0 || isNull(value1) || isTooLong(value1) || hasBadFormat(valule1)) /* ...etc... */

(Para &&, sería si (1 && a && b), etc.)

O esto:

if ( isNull(value1) || isTooLong(value1) || hasBadFormat(valule1) ) /* ...etc... */


if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)) { doSomething(); } else { doSomethingElse(); }

Ahora ves el verdadero bloque fácilmente, creo.

Por supuesto, prefiero:

if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)) { doSomething(); } else { doSomethingElse(); }

:-)