Рефакторинг
Программные продукты, подобно машинам и механизмам, подвержены старению. Хотя речь тут, конечно, не о физическом выходе из строя, а об устаревании моральном.
Если код написан давно, он постепенно перестанет быть актуальным. Иногда это происходит из-за некорректного внесения изменений в программу, или просто из-за появления на рынке новых технических решений. Это мешает работе системы и усложняет интеграцию новых функций. Решить такую проблему призван рефакторинг.
Итак, рефакторинг программы - это процесс преобразования ее внутренней структуры путем поэтапного внесения изменений в её код. Каждое из этих изменений в отдельности и все они в комплексе не меняют внешнюю схему работы программы.
Рефакторинг не предназначен для добавления в систему нового функционала или исправления программных ошибок. Его главная цель – улучшение структуры и качества кода, его упрощение для понимания, облегчение интеграции новых функций и техподдержки.
Понятие рефакторина не следует смешивать с процессами оптимизации и реинжиниринга - хотя все они предполагают работу с кодами.
Оптимизация, подобно рефакторингу, обычно не изменяет внешнее поведение программы, только ускоряет ее работу - но код при этом не обязательно упрощается.
Реинжиниринг же осуществляется для расширения набора функций программного обеспечения.
Практически любой программный продукт требует рефакторинга - постоянного или периодического в зависимости от сложности системы.
Когда Вашему сайту нужен рефакторинг?
- Необходимо системе добавить новую функцию (осуществить реинжиниринг), внедрение которой требует преобразования существующего программного решения.
- Необходимо исправить в работе системы ошибку, при этом сразу выявить причины ее возникновения не удается.
- В командной разработке возникают определенные трудности, вызванные сложной логикой программы (например, дублирование кода, слишком много неупорядоченных данных и т.д.).
Мы рекомендуем не игнорировать процесс рефакторинга. Это своеобразная «гигиена» кода программы, своевременное проведение которой гарантирует стабильную работу системы и легкое, внедрение новых функций.