CodeFest 2019. Рефакторинг
Мой конспект доклада с CodeFest 2019 Алексея Катаева Рефакторинг: договариваемся, планируем, внедряем!open in new window Доклад был одним из самых полезных среди тех которые я слушал.
Постоянный рефакторинг
Продукт никогда не следует переписывать с нуля:
- это слишком рискованно и затратно;
- происходит потеря опыта зафиксированного в коде.
Для того чтобы продукт развивался необходимо применять рефакторинг.
Нельзя делать рефакторинг тайно. Нужно договорится о том чтобы его делать с руководством или владельцем продукта. Доводы за рефакторинг:
- Без него скорость разработки постепенно снижается.
- Без него стабильность продукта понижается.
- Без него увеличивается время введения в проект новых разработчиков и уменьшается количество тех разработчиков которые вообще хотят работать на проекте.
Рефакторинг нужно делать постоянно, параллельно с основной разработкой. Важно, что задачи по рефакторингу это именно отдельные задачи, они не являются частью обычных задач.
В некоторых случаях, компромиссным решением являются изолированные костыли, которые не могут влиять на основной код.
Список задач по рефакторингу
Для того чтобы управлять процессом рефакторинга удобно иметь список задач связанных с ним. Для того чтобы его получить нужно
- Собрать список проблем по коду со всех разработчиков. Могут использоваться рефакторинг-митапы.
- Список сортируется всеми разработчиками.
- По каждой задаче оценивается время.
Проблемы фиксируются в специальном формате, который состоит из:
- Описание проблемы
- Какую пользу принесёт решение?
- Вариант решения
Таким образом получается приоритезированный список задач по уменьшению технического долга с оценкой времени.
Безупречный код
Для того чтобы вовлечь всех разработчиков в процесс написания хорошего кода могут применяться следующие инструменты:
- Пицца-клуб — кто-то читает книгу, затем делает доклад по ней. За доклад получает пиццу. Вступление в клуб — по желанию.
- Может быть организовано в виде семинаров. Читают все, на встрече только обсуждение.
- Education day — отдельное время которое можно посвятить обучению.
- Обязателен отчёт — чему научился и как применял.
Также для того чтобы писать хороший код и делать адекватные оценки нужно знание проекта.
Принципы
Принципы проведения рефакторинга
- Договариваться о его проведении
- Формализовать задачи
- Приоритезировать задачи
- Фиксировать