La nidificazione profonda del flusso di controllo nel codice è un problema studiato?

8

Ho spiegato ai colleghi che i livelli profondi del flusso di controllo erano dannosi per la leggibilità del codice.

Esempio tratto dalla domanda di overflow dello stack pertinente link :

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...

Come per molte altre cose, è banalmente facile trovare opinioni su questo argomento.

Mi chiedo tuttavia se qualcuno può contribuire più di quello.

Per esempio, è stato fatto uno studio pertinente al problema?

Oppure si possono fare altri argomenti che vanno oltre "Mi piace X meglio"?

    
posta user50849 23.04.2013 - 19:27
fonte

1 risposta

4

Il googling veloce mostra che sono state fatte alcune ricerche. Ad esempio, questo documento mostra che esiste un valore della complessità ciclomatica del codice che riduce al minimo la frequenza del bug:

Probabilmentelanidificazioneprofondapuòandarebenefintantochenonsidiramainognipunto.Cioè,averemoltecondizioninidificateincima,comeneltuoesempio,èprobabilmentesoddisfacente,dalmomentocheèessenzialmenteunacondizione,manonèscrittacomeunacongiunzione.

OTOHselatuaistruzioneswitchdiseguitoègrandeeharamiseriamentenonbanali,potrebbeessereapplicatalaclausola"you are screwed".

    
risposta data 23.04.2013 - 19:41
fonte

Leggi altre domande sui tag