Что такое рефакторинг
easy

Что такое рефакторинг

Как сделать код чище и понятнее.

В среде разработчиков можно услышать: «Мне нужен год на рефакторинг» (полгода, месяц, неделя, хотя бы денёк). Что это значит и зачем это нужно — разберём. 

🤔 Это понятие напрямую связано с техническим долгом, прочитайте о нём

На примере кафе

Представим такую ситуацию: мы открыли кафе, построили там классную кухню и наняли шеф-повара. Когда кафе только запускалось, в меню были самые простые блюда, которые можно было разогреть в микроволновке. Вы купили микроволновку и поставили на кухне. Рядом разместили стеллаж для всего нужного. 

Через два месяца дела пошли лучше, и мы решили добавить в меню выпечку. Купили духовой шкаф, протянули провода, добавили рядом стойку с подносами. Место на кухне уменьшилось, повар всё время перешагивает через провода и обходит стойку, но работать можно.

Ещё через месяц поставили фритюрницу и миксер для теста. К ним тоже протянули провода, добавили рядом шкафы для утвари и наняли второго повара. В итоге на кухне полный бардак, всё друг другу мешает, а блюда готовить неудобно. Если мы захотим добавить новую плиту, то это будет уже сложно: места нет, хотя по площади можно поставить хоть две таких плиты. 

В этот момент приходит кухонный проектировщик и рисует всё заново: где что должно стоять. 

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

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

Когда нужен рефакторинг в программировании

Есть два подхода к рефакторингу: плановый и по необходимости.

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

В больших компаниях, где много легаси-кода, могут быть вообще отдельные команды, которые занимаются только рефакторингом старья. Это помогает остальным командам быстрее понимать, что в нём происходит и как им пользоваться.

Второй подход — рефакторинг по необходимости, когда добавление новых возможностей тормозится из-за того, что их сложно интегрировать в старый код. Тогда мы говорим «Стоп машина» и берём какое-то время на реорганизацию всего, что было. 

На что смотрят при рефакторинге кода

Главный показатель успешного рефакторинга — после него код стал чище, проще и понятнее. 

Например, если переменная Z в программе отвечает за количество покупателей, то лучше её заменить на customerCount— так будет проще разобраться в коде и понять, что там происходит.

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

Ещё программисты обращают внимание на размер функций, методов и классов. Если функция получается слишком большой, чтобы поместиться на одном экране, — её разбивают на две, чтобы упростить читаемость кода.

Иногда, чтобы сделать код проще, разработчики выносят часть функций в отдельный файл и подключают его к основной программе. 

Рефакторинг — это не оптимизация кода. При рефакторинге задача программиста — сделать код более понятным, а при оптимизации — более быстрым и эффективным.

А можно без рефакторинга?

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

Без рефакторинга можно только в маленьких продуктах, которые развиваются медленно. 

Что дальше

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

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
10 главных конструкций языка Swift
10 главных конструкций языка Swift

Быстрый гайд по языку.

easy
«Программисты, которые умеют писать алгоритмы, — нишевая профессия»
«Программисты, которые умеют писать алгоритмы, — нишевая профессия»

Мнение работодателя Коли Митина.

easy
119 тысяч рублей за то, чтобы делать приложухи — это справедливо?

Краткий гид по работе мобильного разработчика

easy
Как работает режим энергосбережения в телефонах
Как работает режим энергосбережения в телефонах

Растягиваем время работы до максимума

easy
Что такое this в JavaScript
Что такое this в JavaScript

Это «это», но что именно означает — зависит от контекста

hard
Что такое Webpack, зачем он нужен и как им пользоваться
Что такое Webpack, зачем он нужен и как им пользоваться

Наводим порядок в скриптах

easy
Что такое синтаксический сахар
Что такое синтаксический сахар

Это способ сделать код более читаемым для человека

easy
Подборка нейронок, которые напишут за вас текст
Подборка нейронок, которые напишут за вас текст

Откройте для себя что-то кроме ChatGPT

easy
Почему создатель первого чат-бота выступал против искусственного интеллекта
Почему создатель первого чат-бота выступал против искусственного интеллекта

Почитали за вас и рассказываем покороче

easy
easy
[anycomment]
Exit mobile version