Quali sono i vantaggi di chiudere ogni if-statement con un altro in Python?

5

Sto leggendo Learn Python the Hard Way di Zed Shaw. Nella lezione scrive: "Ogni if-statement deve avere un else ."

Quali sono i vantaggi di terminare ogni if-statement con else ? Esistono motivi validi per non terminare un if-statement con else ?

    
posta Brian Dant 22.03.2012 - 21:09
fonte

4 risposte

13

Direttamente sotto l'elenco delle regole è la seguente dichiarazione:

Never be a slave to the rules in real life. For training purposes you need to follow these rules to make your mind strong, but in real life sometimes these rules are just stupid. If you think a rule is stupid, try not using it.

Sembra che le regole siano impostate in modo da essere eccessivamente prudenti perché il pubblico di destinazione sta iniziando. In questo modo, costringe lo studente a formare buone abitudini quando scrive un codice futuro. Se sei in grado di spiegare perché non pensi più che valga la pena seguire la regola (e supportarla con una buona ragione), stai già riflettendo profondamente sulla questione. Ciò significa che hai valutato le opzioni e deciso di accettare il rischio che potrebbe esserci. Inoltre, è meno probabile che tu commetta un errore che la regola avrebbe impedito se hai trascorso molto tempo a pensare alla regola.

    
risposta data 22.03.2012 - 21:25
fonte
2

Ho lavorato con il codice che ha un caso che "assolutamente non accadrà". E poi succede ... Anche se la clausola else registra il problema, si assicura che lo troverai quando ti morderà più tardi.

Non ne so molto sulla copertura del codice, ma penso che otterresti risultati migliori se tutti i percorsi sono coperti.

    
risposta data 22.03.2012 - 21:13
fonte
1

Penso che dipenda da quale sia il tuo scopo. Se vuoi ad esempio controllare una funzione, non hai bisogno di un'altra istruzione:

    def foo(bar):
        if(bar<0 or bar>10) or not isinstance(bar,int):
            return -1
        print "successfull"
        print bar

Ma se hai qualcosa di più complesso come se ... fai questo questo ... e altro ... fai questo questo ... allora dovresti fare "altro" per la leggibilità, anche se non è davvero necessario.

    
risposta data 22.03.2012 - 21:15
fonte
1

Penso che stia cercando di dimostrare qualcosa sul controllo del flusso. Quello che sta cercando di dimostrare è l'ipotesi di qualcuno, ma penso che stia cercando di farti fermare e pensare a cosa farebbe il "sentiero non preso" in nessuna dichiarazione. Presumibilmente si è imbattuto in un problema in passato in cui questo tipo di pensiero si sarebbe dimostrato utile.

Questo tipo di regola è solo un modo per assurdo da applicare nella vita reale però.

    
risposta data 22.03.2012 - 21:48
fonte

Leggi altre domande sui tag