Afirmei aos colegas de trabalho que níveis profundos de fluxo de controle eram prejudiciais à legibilidade do código.
Exemplo, retirado da pergunta relevante de estouro de pilha /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 na maioria das coisas, é trivialmente fácil encontrar opiniões sobre esse tópico.
Gostaria de saber, no entanto, se alguém pode contribuir mais do que isso.
Por exemplo, foi realizado um estudo real relevante para o problema?
Ou podem ser apresentados outros argumentos que vão além de "eu gosto mais de X"?
coding-style
user50849
fonte
fonte
Respostas:
A pesquisa rápida mostra que algumas pesquisas foram feitas. Por exemplo, este artigo mostra que há um valor de complexidade ciclomática de código que minimiza a taxa de erros:
Provavelmente o assentamento profundo pode ser bom, desde que não se ramifique em todos os pontos. Ou seja, ter muitas condições aninhadas no topo, como no seu exemplo, provavelmente é bom, pois é essencialmente uma condição, mas não escrita como uma conjunção.
OTOH, se a sua declaração de chave abaixo for grande e tiver ramificações seriamente não triviais, a cláusula 'você está ferrado' pode ser aplicada.
fonte