Così, in Python (anche se penso che può essere applicato a molte lingue), mi ritrovo con qualcosa di simile abbastanza spesso:piccolo ridondanza di codice all'interno di while-loop (non si sente pulito)
the_input = raw_input("what to print?\n")
while the_input != "quit":
print the_input
the_input = raw_input("what to print?\n")
Forse sono troppo pignolo, ma non mi piace come la linea the_input = raw_input("what to print?\n")
debba essere ripetuta. Riduce la manutenibilità e l'organizzazione. Ma non vedo alcuna soluzione alternativa per evitare il codice duplicato senza peggiorare ulteriormente il problema. In alcune lingue, potrei scrivere qualcosa di simile:
while ((the_input=raw_input("what to print?\n")) != "quit") {
print the_input
}
Questo è sicuramente non Pythonic, e Python non ha nemmeno permetto di assegnazione all'interno di condizioni di loop AFAIK.
Questo codice valido fissa la ridondanza,
while 1:
the_input = raw_input("what to print?\n")
if the_input == "quit":
break
print the_input
Ma non si sente abbastanza di destra entrambi. Il while 1
implica che questo ciclo verrà eseguito per sempre; Sto usando un loop, ma dandogli una condizione falsa e inserendone quella reale al suo interno.
Sono troppo schizzinoso? C'è un modo migliore per farlo? Forse c'è un costrutto linguistico progettato per questo che non conosco?
Penso che la prima forma sia perfettamente accettabile. –
Questo è un modello comune chiamato [loop e mezzo] (http://www.cs.duke.edu/~ola/patterns/plopd/loops.html#loop-and-a-half). –