У меня есть тема для обсуждения. У меня есть фрагмент кода с 24 ifs/elifs. Операция - это мой собственный класс, который представляет функциональность, похожую на Enum. Вот фрагмент кода:Слишком много операторов 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()
(...)
У меня есть проблемы с точки зрения удобочитаемости. Лучше изменить его на 24 класса и использовать полиморфизм? Я не уверен, что это сделает мой код работоспособным ... С одной стороны, эти ifs довольно понятны, и с ними не должно быть трудно следовать, с другой стороны, слишком много ifs.
Мой вопрос довольно общий, однако я пишу код в python, поэтому я не могу использовать конструкции типа switch.
Как вы думаете?
UPDATE:
Одна важная вещь в том, что StartObject(), StopObject() и StatusObject() являются конструкторами, и я хотел присвоить объект стратегии эталонным.
'case' заявление, вместо этого? что или имеют массив ссылок на методы для вызова динамически, например. любой эквивалент python 'array_of_methods [operation]()' будет ... –
Марк, python не имеет операторов switch/case. https://www.python.org/dev/peps/pep-3103/ – Stiffo