Expuse a los compañeros de trabajo que los niveles profundos de flujo de control eran perjudiciales para la legibilidad del código.
Ejemplo, tomado de la pregunta de desbordamiento de pila relevante /software/52685/if-you-need-more-than-3-levels-of-indentation-youre-screwed :
for(int i=0; i<10; ++i){
Object val = repeat(i, someVar);
if(val.value > 3){
switch(val.item){
case DOG:
if(mProcess){
outputToUser(val);
doMoreThings(val, mMoreThingDoer);
if(mRepurpose){
addExample(val);
}
// and so on, and so on...
Como con la mayoría de las cosas, es trivialmente fácil encontrar opiniones sobre este tema.
Sin embargo, me pregunto si alguien puede contribuir más que eso.
¿Se ha realizado, por ejemplo, un estudio real relevante para el problema?
¿O se pueden hacer otros argumentos que vayan más allá de "Me gusta X mejor"?
coding-style
usuario50849
fuente
fuente
Respuestas:
La búsqueda rápida en Google muestra que se han realizado algunas investigaciones. Por ejemplo, este documento muestra que hay un valor de complejidad ciclomática del código que minimiza la tasa de errores:
Probablemente la anidación profunda puede estar bien siempre que no se ramifique en todos los puntos. Es decir, tener muchas condiciones anidadas en la parte superior, como en su ejemplo, probablemente esté bien, ya que es esencialmente una condición, simplemente no escrita como una conjunción.
OTOH si su declaración de cambio a continuación es grande y tiene ramificaciones realmente no triviales, puede aplicarse la cláusula 'estás jodido'.
fuente