Об авторе Xin Ming Ant Техническая группа по работе с финансовыми данными
предисловие
Я также представил передний проект нашей команды от ноль начала 8-месячный итерационный бизнес-код 100 000 (20% для долгосрочных требований к планированию для продукта), все еще перекрывая процесс.
В дополнение к разработке хорошо продуманной архитектуры для управления этим чрезвычайно сложным интерфейсным приложением члены команды также начали пополнять свои знания шаблонов проектирования и рефакторинга, чтобы оптимизировать код проекта в процессе непрерывной итерации и поддерживать код. Свежесть, надежность, ремонтопригодность... так что новые члены команды, которые присоединяются позже, могут быстро присоединиться к нашей разработке продукта
PS: Независимо от языка,рефакторингявляются неотъемлемой частью процесса разработки программного обеспечения. Если вы уже понимаете основы рефакторинга, вы можете сразу перейти к концу статьи.重构案例
часть.
Реконструировать фон
«Если подгузник пахнет, смени его».
- Код со временем становится все хуже и хуже по мере добавления бизнес-требований.
- Сюда могут входить следующие неприятные запахи (только название):
- повторяющийся код
- слишком длинная функция
- Следуйте принципу: всякий раз, когда вы чувствуете, что вам нужен комментарий, чтобы что-то объяснить, вы можете попробовать записать то, что нужно объяснить, в функцию.
- Избыточность
- Когда подклассы не выполняют достаточно работы или когда в видимых ожиданиях нет новой ситуации, рассмотрите возможность встраивания класса.
- слишком длинный класс
- Эта ситуация склонна к избыточному коду. Например, если в классе есть несколько переменных с одинаковым префиксом или суффиксом, это означает, что вы можете рассмотреть возможность их извлечения в компонент, или рассмотреть, может ли этот компонент быть подклассом, и использовать метод извлечения классов для рефакторинга.
что такое рефакторинг
Вернемся назад и посмотрим на «что такое рефакторинг».
-
Улучшить внутреннюю структуру программного обеспечения без изменения его наблюдаемого поведения
-
для улучшения понимания и снижения затрат на модификацию
摘自《重构 - 改善既有代码的设计》(下面简称《重构》)
При реконструкции?
Нам нужно внести ясность: рефакторинг — это не то, что следует откладывать на определенный период времени. Рефакторинг — это не конец, но рефакторинг может помочь вам добиться цели.
Есть только три вещи, три реконструкции
- Повторяющаяся работа, когда существующий код не помогает легко добавлять новые функции.
- Логика устранения неполадок при исправлении ошибок
- обзор кода позволяет другим просматривать код, чтобы проверить, читабельен ли он и понятен
- Слишком много кода раскомментировано, и даже я не могу быстро разобраться в логике кода
Реконструкция
- Количество: количество строк кода
- Качество: сложность кода, связность, удобочитаемость, сложность, зависящая от архитектуры, и т. д.
- стоимость: потраченное время
- Вознаграждение (результат): поддержка быстрого наложения последующих функций, решение существующих противоречий, которые невозможно оптимизировать из-за проблем с дизайном кода и т. д.
Получить точку Получить точку
Наговорив столько глупостей, на самом деле все понимают, что теории, не интегрированные с практикой, пусты.
но重构
а также设计模式
Точно так же он также требует процесса «обучение — понимание — прорыв». Изучение первого шага позволяет вам понять основные методы реконструкции, практика второго шага пробуждает вашу память и применение методов реконструкции, а применение и практический опыт третьего шага стимулирует ваше мышление, понимание и обобщение. гибкое использование.
Все люди всегда учатся и постоянно пересматривают, чтобы достичь конкретных приложений в конкретных сценариях и быть гибкими. Рефакторинг — это большая тема, и автор «Рефакторинга» сам пережил множество проектов и навыков рефакторинга, которые были суммированы после многолетнего опыта.
Советы по рефакторингу
Методов рефакторинга, обобщённых автором книги «Рефакторинг», слишком много, и мы можем показать лишь обобщённый всеми авторами список рефакторингов в картинках.
Для конкретных добавок вы можете увидеть"Реконструкция"Эта книга.
Практика рефакторинга
Один из подходов, рекомендованных автором:
-
随机挑选一个目标
Начните с выбора для себя цели (типа "избавиться от кучи ненужных подклассов"), затем двигайтесь к цели, делая маленькие, но твердые шаги -
没把握就停下来
Когда вы не можете доказать, что все, что вы сделали, может гарантировать логику и семантику исходной программы, пожалуйста, остановитесь и подумайте: улучшился ли существующий рефакторинг или он не дает результатов и его нужно отменить. 保证每次重构后的测试都能正常跑通
Как разработчик, вы должны рассматривать рефакторинг как часть разработки и проводить рефакторинг по мере разработки. На основе быстрого стекирования кода и реализации основных необходимых функций напишите тестовые случаи, чтобы убедиться, что функции остаются неизменными, и постепенно проводите рефакторинг.
Это наша команда попросила всех понять эту причину реконструкции двери основных навыков. Хорошие программисты должны избегать низкого кода качества.
Дело реконструкции
сюжетная сцена
- Есть три типа фильмов, которые клиенты могут взять напрокат
- Правила аренды
- Правила расчета цены:
Обычный фильм - начальная цена 2 ¥, а часть, превышающая 2 дня, будет стоить 1,3 юаня за фильм в день.
Новые фильмы — 3 юаня за фильм в день.
Детские фильмы - начиная с 2¥, порция свыше 3 дней будет стоить 0,8 юаня за фильм в день. - Правила начисления баллов:
Добавляйте 1 балл за каждый фильм, который вы берете взаймы, и добавляйте 2 балла за каждый новый фильм.
- Правила расчета цены:
исходный код
Результат программы: (пожалуйста, убедитесь, что результат не изменился после рефакторинга~)
- Диаграмма классов
- Разделенные обязанности, следуйтеПринцип единой ответственности
- Функция печати счета-фактуры выполняет множество функций, включая расчет расходов, расчет баллов, отображение результатов и т. д.
- Решение 1:6.1 Метод извлечения- Наиболее часто используемый метод реконструкции
- Решение 2:9.1 Разлагают условное (разложение условное выражение)
- Класс пользователей берет на себя обязанности, которые ему не принадлежат, в том числе: правила начисления платы, правила начисления баллов. Эти обязанности должны быть в жанре кино.
- Функция печати счета-фактуры выполняет множество функций, включая расчет расходов, расчет баллов, отображение результатов и т. д.
- Разберитесь с бизнес-логикой, такой как правила начисления и правила начисления баллов — см. сюжетную сцену
- Не обращайтесь к данным объекта напрямую. Другим объектам легко изменить данные объекта, при этом объект, владеющий данными, ничего об этом не знает.
- решение:8.10 Инкапсулировать поле- Разделение данных и поведения
- Рефакторинг не должен восприниматься внешним миром, чтобы убедиться, что тестовые примеры все еще выполнимы.
частичный рефакторинг
Чтобы лучше продемонстрировать метод реконструкции, мы используем TS и проводим частичную реконструкцию в соответствии с приведенным выше обсуждением.Метод реконструкции фактически определяется в соответствии с будущим направлением расширения бизнеса, и оптимального решения не существует.Если вы заинтересованы , вы можете присоединиться к нам, выскажите свое мнение~
- CODEPENРезультаты:
- Рефакторинг отношения диаграммы классов
основные навыки
- Делайте небольшие шаги и часто тестируйте (убедитесь, что у вас достаточно тестов для поддержки ваших действий по рефакторингу)
- Используйте интеллектуальные инструменты разработки (например, VSCode Щелкните правой кнопкой мыши могут разбирать длинный код функции в функционал)
Рекомендуемые книги
- «Чистый код»
- «Рефакторинг — улучшение дизайна существующего кода»
- «Искусство модификации кода»
- «Энциклопедия кода»
На самом деле рефакторинг — это долгосрочная инвестиция с высоким соотношением затрат и результатов. Студенты, заинтересованные в рефакторинге, могут подписаться на рубрику или отправить свое резюме на tao.qit####alibaba-inc.com'.replace('####', '@'). Приветствуются люди с высокими идеалами присоединиться~
Оригинальный адрес:GitHub.com/proto team/no…