C'è bisogno di thenif oltre a elseif?

0

Per i costrutti nidificati se, alcune lingue forniscono costrutti simili a

if Bexp1 then C1
  elseif Bexp2 then C2
  ...
  elseif Bexpn then Cn
else Cn+1
endif

Tutto ciò che ho visto fornisce elseif . Mi chiedo perché non fornire ulteriormente thenif ? C'è bisogno di thenif ?

Grazie.

    
posta Tim 28.09.2016 - 16:46
fonte

2 risposte

6

Is there a need for thenif?

Dal momento che nessun linguaggio tradizionale ha un tale costrutto, la risposta alla tua domanda deve essere "no".

Anche in questo caso non è necessario nemmeno elseif , poiché le lingue simili a C ottengono con else if . Quindi, solo perché non è necessario, non significa che non potrebbe esistere.

Quindi dovrebbe esistere? Poiché il suo scopo sarebbe quello di aiutare a scrivere nidificati if , vale la pena ricordare che questi ultimi spesso aggiungono sia alla complessità ciclomatica che alla scarsa leggibilità. Pertanto, se si desidera evitare% nidificati di co_de (come regola generale), sembra poco utile aggiungere if a qualsiasi lingua.

    
risposta data 28.09.2016 - 16:52
fonte
5

Penso che un tale costrutto sarebbe più confuso che utile.

Considera questa parte di codice:

if my_condition then
    if my_other_condition then
        do_1();
    else
        do_2();
    endif;
else
    do_3();
endif;

Se avessimo una parola chiave "thenif", saremmo in grado di abbreviare il codice in questo modo:

if my_condition thenif my_other_condition then
    do_1();
else
    do_2();
else
    do_3();
endif;

La nuova versione del codice rende più difficile rispondere a domande importanti a prima vista, come ad esempio:

  • Quali rami potrebbero essere presi se my_condition è vero?
  • Che cosa accade se my_other_condition viene valutato e viene visualizzato come falso?
  • Quale occorrenza di else corrisponde a quale occorrenza di if ?
risposta data 28.09.2016 - 17:03
fonte

Leggi altre domande sui tag