Dichiarazione caso Python? [duplicare]

0

Ho creato un semplice script Python che richiede l'input dell'utente per generare una serie di risposte matematiche. In una parte ho fatto questo:

while True:

E iterato attraverso il ciclo fino a quando ho usato un'istruzione if per uscire da esso, qualcosa di simile a:

if answer == something_whatever:
  break

So che gli esempi sono vaghi, ma non sto chiedendo una soluzione per un problema di programmazione, quello che è successo qui è che il mio professore mi ha detto che le dichiarazioni di rottura non devono essere usate in questo modo ..... lei ha detto che le dichiarazioni di rottura dovrebbero essere usate solo nelle dichiarazioni del caso, usarle altrimenti è considerata una cattiva pratica. Ho saggiamente detto al mio istruttore che non c'era alcun costrutto case switch in Python. Usare una frase break in questo modo è considerata una cattiva pratica? Capisco che ci sono molti modi in cui uno potrebbe uscire da un ciclo, ma sta usando veramente while True così male?

    
posta Alex_adl04 12.08.2014 - 10:50
fonte

1 risposta

2

Quando ero al college, una volta, stavo aiutando il mio amico a risolvere un esercizio. Il risultato finale è stato simile a:

public int ComputeSomething(int a, int b)
{
    if (a == 0) {
        return 0;
    }

    // Business logic (5-6 LOC) goes here.
    return result;
}

Poi arrivò l'insegnante, guardò la soluzione e ci disse che è sbagliato. Poi lo ha riscritto nel modo giusto :

public int ComputeSomething(int a, int b)
{
    int result;
    if (a == 0) {
        result = 0;
    } else {
        // Business logic (5-6 LOC) goes here.
    }

    return result;
}

Più tardi, leggendo libri di autori popolari, ho imparato che quello che ho usato è chiamato clausola di salvaguardia e in questo esempio sarebbe in realtà una soluzione preferita (soprattutto perché rende più semplice separare le condizioni eccezionali dalla logica effettiva e evitare ulteriori indentazioni.

Per farla breve, cattiva pratica di solito è leggermente soggettiva e molto dipendente dal contesto. Qualcosa che sarebbe una cattiva pratica in una lingua si adatta bene in una lingua diversa. Qualcosa che viene utilizzato da sviluppatori esperti del settore sarebbe evitato dagli insegnanti al college.

In Python, l'utilizzo di break per uscire da while non ha nulla di sbagliato. Il caso è simile all'esempio sopra: vuoi avere un singolo punto di uscita dal tuo while , o accetti a break di uscire ovunque all'interno del blocco while ?

Riscritto:

answer_found = False
while not answer_found:

    # Business logic goes here.

    if answer == something_whatever:
        answer_found = True

il codice ha il suo vantaggio. La leggibilità è leggermente aumentata se scegli un buon nome per la variabile. Qui, un manutentore comprende, senza dover leggere tutto il codice, che while elabora alcune domande finché non trova una risposta.

Inoltre, non sfidare il tuo insegnante a dire che qualcuno su un Q & Un sito Web ti ha detto così. Invece, riscrivi il tuo codice per evitare le dichiarazioni di break , dimostrando che in realtà sai come farlo.

    
risposta data 12.08.2014 - 12:40
fonte

Leggi altre domande sui tag