Mam temat do omówienia. Mam fragment kodu z 24 ifs/elifs. Operacja to moja własna klasa reprezentująca funkcjonalność podobną do Enum. Oto fragment kodu:Zbyt wiele instrukcji 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()
(...)
Mam obawy z punktu widzenia czytelności. Czy lepiej jest zmienić to na 24 klasy i użyć polimorfizmu? Nie jestem przekonany, że sprawi to, że mój kod będzie możliwy do utrzymania ... Z jednej strony, te wskazówki są całkiem jasne i nie powinno być trudno je śledzić, z drugiej strony jest ich zbyt wiele.
Moje pytanie jest dość ogólne, jednak piszę kod w pythonie, więc nie mogę używać konstrukcji takich jak przełącznik.
Co myślisz?
UPDATE:
Jedną ważną rzeczą jest to, że StartObject(), StopObject() i StatusObject() są konstruktorzy i chciałem przypisać obiekt do strategii odniesienia.
Wyrażenie "case", zamiast tego? to lub mają tablicę odwołań do metody dynamicznie wywoływania, np. jakikolwiek pythonowy odpowiednik 'array_of_methods [operation]()' byłby ... –
Marc, python nie ma instrukcji switch/case. https://www.python.org/dev/peps/pep-3103/ – Stiffo