Быстрый итеративный проект, после долгого времени, код может быть заполнен большим количеством if/else, вложенных 6 или 7 слоев, функции в сотни строк, Джейн! прямой! Смотреть! умри! люди!
На самом деле это неплохо, я видел и более серьезную вложенность, люди, которые берутся за такого рода проекты, должны быть в отчаянии.
Есть много причин для этого
- Дизайн не идеален
- Неполный учет потребностей
- Изменения разработчиков
Но самое смертоносное — это «лень» — это ужасно — не иметь мечты!
Ранние итерации слишком ленивы для оптимизации, приходят с требованием, добавляют если, и со временем это станет пирамидой.
Когда код становится слишком сложным для обслуживания, его можно только реорганизовать и оптимизировать. Итак, есть ли решение элегантно оптимизировать эти избыточные if/else?
01 вернуться раньше
Это практика обращения условия суждения. Код будет более понятным с точки зрения логического выражения. См. следующий код:
На самом деле, каждый раз, когда я вижу приведенный выше код, у меня царапается сердце: я могу сначала оценить !condition и убить остальное.
02 Режим стратегии
Есть такой сценарий, когда по разным параметрам следуют разной логике, на самом деле такой сценарий встречается очень часто.
Самая общая реализация:
Глядя на приведенный выше код, можно увидеть 4 стратегии и две схемы оптимизации.
2.1 Полиморфизм
Конкретный объект стратегии хранится на карте, а оптимизированная реализация
Вышеупомянутая схема оптимизации имеет недостаток: для того, чтобы быстро получить соответствующую реализацию стратегии, необходим объект карты для сохранения стратегии, при добавлении новой стратегии ее необходимо добавить на карту вручную, что легко игнорируется.
2.2 Перечисление
Выяснено, что многие студенты не знают, что методы могут быть определены в перечислении, здесь может быть определено перечисление, представляющее состояние, и может быть реализован метод запуска.
Переопределить перечисление политик
Код после оптимизации по перечислению выглядит следующим образом
03 Научитесь использовать Дополнительно
Необязательный в основном используется для непустого суждения.Поскольку это новая функция jdk8, она не используется очень часто, но ее действительно здорово использовать.
Перед использованием:
Если пользователь для входа пуст, выполните действие 1, в противном случае выполните действие 2. После использования опциональной оптимизации непустая проверка становится более элегантной, а операция if косвенно сокращается.
04 Советы по массивам
Из пояснений гугла это режим программирования называется table-driven method.Суть в запросе информации из таблицы вместо логических операторов.Например есть такой сценарий что количество дней в месяце получается через месяц , Он используется только в качестве демонстрации случая, и данные не являются строгими.
Общая реализация:
оптимизированный код
05 Заключение
В качестве обязательного условного оператора в каждом языке программирования, если еще часто используется в программировании. Обычно рекомендуется, чтобы вложенность не превышала трех уровней.Если в фрагменте кода слишком много вложений if else, читабельность кода быстро ухудшится, а сложность последующего обслуживания также значительно улучшится.
Если у вас есть другие советы, пожалуйста, оставьте сообщение! ! !