Рефакторинг в стиле ниндзя и другие приемчики

Можно вечно смотреть на улучшать три вещи: первую, вторую и код, который написан не тобой. Именно ему мы решили посвятить один из ближайших онлайн-митапов:

  • посмотрим на код популярного опенсорс-проекта на гитхабе,
  • покажем разные подходы к его рефакторингу, обсудим полезные инструменты, возможные грабли — ну и немного попишем в прямом эфире.
  • а еще разыграем вот такого слона за лучшую историю о рефакторинге
    Истории будут приниматься в чате трансляции на Youtube. Лучшую историю субъективно выберут ведущие в конце стрима. Мы отправим слоника из Москвы в любую точку мира.

    У слона есть вторая сторона, на которой написано Symfony. Возможно, кому-то будет важно это знать.

    _lcp9sf_qbt6sylvmfmw1iownim.jpeg
    Слоник официальный. Ехал к нам 3 месяца.




Подключайся в ближайший четверг, 1-го октября, в 19 часов по Москве/Киеву/Минску. Тут можно посмотреть расписание стрима и получить напоминалку.

Под катом — знакомство с участниками и несколько «разогревающих» историй от них.

Валентин Назаров — соведущий; лидил CRM-1, один из старейших проектов в Skyeng


Расскажи про свой первый опыт рефакторинга.

Разбирал в 2011-м самописный движок какого-то проекта про туризм. Я тогда был начинающим разработчиком, мало не показалось :) Но и сейчас такое прогрызть было бы очень непросто.

А самая памятная история про это?

См. выше.

Как устроен подход к рефакторигу в твоей команде?

Мы практикуем ниндзя-рефакторинг: трогаем только те места, где очевидны красные флаги (дублирующийся код, перебор в сложности ментальной модели и пр.), и не меняем много кода сразу. Важна стабильность прода, да и на код-ревью люди должны реально прочитать и понять.

Про практики других команд ребята из компании как-то писали целый пост.

Рефакторинг — это…

Работа над ошибками :)


Александр Макаров — соведущий; пилит 3-ю версию фреймворка Yii


Расскажи про свой первый опыт рефакторинга.

Ох, не вспомню, но было всякое. И без тестов рефакторил, а потом ломалось. И часть бизнес-логики терял. И без понимания кода рефакторил не так.

А cамая памятная история про рефакторинг?

Я идеально старался написать движок блога :) Процесс растянулся года на три… Сейчас бы я не назвал тот код хорошим.

Как устроен подход к рефакторигу в твоей команде?

Черновая версия pull request выкладывается на всеобщее обозрение. Далее все налетают и оставляют комменты. По итогам рефакторим.

Иногда специально рефакторим тоже, но процедура примерно та же.

Рефакторинг — это…

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


Валентин Удальцов — будет рефакторить; ведет телеграм-канал «Пых»


Расскажи про свой первый опыт рефакторинга.

Трудно вспомнить, я всегда любил это дело.

А самая памятная история про это дело?)

Однажды на большом проекте я оптимизировал конфигурацию Symfony Security. В пятницу это задеплоили, а в понедельник выяснилось, что все выходные клиенты не могли зайти через OAuth на один из ключевых разделов сайта…

Как устроен подход к рефакторигу в твоей команде?

У нас модульный код и достаточно низкий coupling, это помогает. Что касается новых фич, мы не стараемся сразу всё сделать верно. Это невозможно и неэффективно. Некоторые проблемы нужно загрузить в голову, чтобы через пару месяцев получить решение. Поэтому часто мы останавливаемся на каком-то простом решении в лоб, но помечаем часть кода подробными todo. Раз в месяц или чаще я прохожусь по todo в проекте и смотрю, что можно из этого переделать прямо сейчас. Правило состоит в том, что сделать нужно хоть что-то.

Рефакторинг — это…

Когда ты делаешь лучше, потому что теперь знаешь, как.


Леонид Корсаков — будет рефакторить; ведет чат PHP-сообщества Татарстана


Расскажи про свой первый опыт рефакторинга.

Никогда не работал на проекте, где был бы идеальный код. Так что с рефакторингом по жизни)

Самая памятная история про это.

Однажды зарефакторили очень много кода, добавили фич, а релиз так и не пошел в продакшен.

Как устроен подход к рефакторигу в твоей команде?

Инициатива полностью отдана разработчикам.

Рефакторинг — это…

Непрерывный процесс улучшения кода.

p.s. Надеемся увидеться на стриме в четверг. Готовьте свои истории.

© Habrahabr.ru