Рефакторинг в стиле ниндзя и другие приемчики
Можно вечно смотреть на улучшать три вещи: первую, вторую и код, который написан не тобой. Именно ему мы решили посвятить один из ближайших онлайн-митапов:
- посмотрим на код популярного опенсорс-проекта на гитхабе,
- покажем разные подходы к его рефакторингу, обсудим полезные инструменты, возможные грабли — ну и немного попишем в прямом эфире.
- а еще разыграем вот такого слона за лучшую историю о рефакторингеИстории будут приниматься в чате трансляции на Youtube. Лучшую историю субъективно выберут ведущие в конце стрима. Мы отправим слоника из Москвы в любую точку мира.
У слона есть вторая сторона, на которой написано Symfony. Возможно, кому-то будет важно это знать.
Слоник официальный. Ехал к нам 3 месяца.
Подключайся в ближайший четверг, 1-го октября, в 19 часов по Москве/Киеву/Минску. Тут можно посмотреть расписание стрима и получить напоминалку.
Под катом — знакомство с участниками и несколько «разогревающих» историй от них.
Валентин Назаров — соведущий; лидил CRM-1, один из старейших проектов в Skyeng
Расскажи про свой первый опыт рефакторинга.
Разбирал в 2011-м самописный движок какого-то проекта про туризм. Я тогда был начинающим разработчиком, мало не показалось :) Но и сейчас такое прогрызть было бы очень непросто.
А самая памятная история про это?
См. выше.
Как устроен подход к рефакторигу в твоей команде?
Мы практикуем ниндзя-рефакторинг: трогаем только те места, где очевидны красные флаги (дублирующийся код, перебор в сложности ментальной модели и пр.), и не меняем много кода сразу. Важна стабильность прода, да и на код-ревью люди должны реально прочитать и понять.
Про практики других команд ребята из компании как-то писали целый пост.
Рефакторинг — это…
Работа над ошибками :)
Александр Макаров — соведущий; пилит 3-ю версию фреймворка Yii
Расскажи про свой первый опыт рефакторинга.
Ох, не вспомню, но было всякое. И без тестов рефакторил, а потом ломалось. И часть бизнес-логики терял. И без понимания кода рефакторил не так.
А cамая памятная история про рефакторинг?
Я идеально старался написать движок блога :) Процесс растянулся года на три… Сейчас бы я не назвал тот код хорошим.
Как устроен подход к рефакторигу в твоей команде?
Черновая версия pull request выкладывается на всеобщее обозрение. Далее все налетают и оставляют комменты. По итогам рефакторим.
Иногда специально рефакторим тоже, но процедура примерно та же.
Рефакторинг — это…
Способ не погрязнуть в техническом долге.
Валентин Удальцов — будет рефакторить; ведет телеграм-канал «Пых»
Расскажи про свой первый опыт рефакторинга.
Трудно вспомнить, я всегда любил это дело.
А самая памятная история про это дело?)
Однажды на большом проекте я оптимизировал конфигурацию Symfony Security. В пятницу это задеплоили, а в понедельник выяснилось, что все выходные клиенты не могли зайти через OAuth на один из ключевых разделов сайта…
Как устроен подход к рефакторигу в твоей команде?
У нас модульный код и достаточно низкий coupling, это помогает. Что касается новых фич, мы не стараемся сразу всё сделать верно. Это невозможно и неэффективно. Некоторые проблемы нужно загрузить в голову, чтобы через пару месяцев получить решение. Поэтому часто мы останавливаемся на каком-то простом решении в лоб, но помечаем часть кода подробными todo. Раз в месяц или чаще я прохожусь по todo в проекте и смотрю, что можно из этого переделать прямо сейчас. Правило состоит в том, что сделать нужно хоть что-то.
Рефакторинг — это…
Когда ты делаешь лучше, потому что теперь знаешь, как.
Леонид Корсаков — будет рефакторить; ведет чат PHP-сообщества Татарстана
Расскажи про свой первый опыт рефакторинга.
Никогда не работал на проекте, где был бы идеальный код. Так что с рефакторингом по жизни)
Самая памятная история про это.
Однажды зарефакторили очень много кода, добавили фич, а релиз так и не пошел в продакшен.
Как устроен подход к рефакторигу в твоей команде?
Инициатива полностью отдана разработчикам.
Рефакторинг — это…
Непрерывный процесс улучшения кода.
p.s. Надеемся увидеться на стриме в четверг. Готовьте свои истории.