CodeFest 2019. Рефакторинг

Мой конспект доклада с CodeFest 2019 Алексея Катаева Рефакторинг: договариваемся, планируем, внедряем!open in new window Доклад был одним из самых полезных среди тех которые я слушал.

Постоянный рефакторинг

Продукт никогда не следует переписывать с нуля:

  • это слишком рискованно и затратно;
  • происходит потеря опыта зафиксированного в коде.

Для того чтобы продукт развивался необходимо применять рефакторинг.

Нельзя делать рефакторинг тайно. Нужно договорится о том чтобы его делать с руководством или владельцем продукта. Доводы за рефакторинг:

  • Без него скорость разработки постепенно снижается.
  • Без него стабильность продукта понижается.
  • Без него увеличивается время введения в проект новых разработчиков и уменьшается количество тех разработчиков которые вообще хотят работать на проекте.

Рефакторинг нужно делать постоянно, параллельно с основной разработкой. Важно, что задачи по рефакторингу это именно отдельные задачи, они не являются частью обычных задач.

В некоторых случаях, компромиссным решением являются изолированные костыли, которые не могут влиять на основной код.

Список задач по рефакторингу

Для того чтобы управлять процессом рефакторинга удобно иметь список задач связанных с ним. Для того чтобы его получить нужно

  • Собрать список проблем по коду со всех разработчиков. Могут использоваться рефакторинг-митапы.
  • Список сортируется всеми разработчиками.
  • По каждой задаче оценивается время.

Проблемы фиксируются в специальном формате, который состоит из:

  • Описание проблемы
  • Какую пользу принесёт решение?
  • Вариант решения

Таким образом получается приоритезированный список задач по уменьшению технического долга с оценкой времени.

Безупречный код

Для того чтобы вовлечь всех разработчиков в процесс написания хорошего кода могут применяться следующие инструменты:

  • Пицца-клуб — кто-то читает книгу, затем делает доклад по ней. За доклад получает пиццу. Вступление в клуб — по желанию.
    • Может быть организовано в виде семинаров. Читают все, на встрече только обсуждение.
  • Education day — отдельное время которое можно посвятить обучению.
    • Обязателен отчёт — чему научился и как применял.

Также для того чтобы писать хороший код и делать адекватные оценки нужно знание проекта.

Принципы

Принципы проведения рефакторинга

  • Договариваться о его проведении
  • Формализовать задачи
  • Приоритезировать задачи
  • Фиксировать
Последниее изменение: 24.08.2023, 06:42:55