Ho qualche argomento da discutere. Ho un frammento di codice con 24 ifs/elifs. L'operazione è la mia classe che rappresenta la funzionalità simile a Enum. Ecco un frammento di codice:Troppe dichiarazioni if
if operation == Operation.START:
strategy = strategy_objects.StartObject()
elif operation == Operation.STOP:
strategy = strategy_objects.StopObject()
elif operation == Operation.STATUS:
strategy = strategy_objects.StatusObject()
(...)
Ho preoccupazioni dal punto di vista della leggibilità. È meglio cambiarlo in 24 classi e usare il polimorfismo? Non sono convinto che renderà il mio codice controllabile ... Da un lato i if sono abbastanza chiari e non dovrebbe essere difficile da seguire, d'altra parte ci sono troppi ifs.
La mia domanda è piuttosto generale, tuttavia sto scrivendo codice in python quindi non posso usare costruzioni come switch.
Cosa ne pensi?
UPDATE:
Una cosa importante è che StartObject(), StopObject() e StatusObject() sono costruttori e volevo assegnare un oggetto a strategia di riferimento.
dichiarazione 'case', invece? oppure avere una serie di riferimenti al metodo per chiamare dinamicamente, ad es. qualunque sia l'equivalente python di 'array_of_methods [operation]()' sarebbe ... –
Marc, python non ha istruzioni switch/case. https://www.python.org/dev/peps/pep-3103/ – Stiffo