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

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

Этот раздел навеян очередным прочтением книги М. Фаулера «Рефакторинг». Однако я помню, как сложно было разбираться с примерами на Java, поэтому я адресую статьи этого раздела программистам, имеющим дело с языком PHP. Некоторые типы рефакторинга теряют свой смысл в контексте PHP, некоторые становяться не сильно адекватными. Такие рефакторинги описывать смысла нет, но возможно в процессе написания статей для раздела, появятся примеры, имеющие смысл только в PHP.

Когда применять рефакторинг?

Такой вопрос возникает достаточно часто, но однозначного ответа на него нет. Могу только сказать, что рефакторинг ради рефакторинга, т.е. ради самого процесса — смысла практически не имеет. Рефакторинг нужен тогда, когда вам требуется сделать код более понятным при прочтении, либо добавить в код новый функционал. Не занимайтесь рефакторингом от нечего делать, т.к. в такой момент у вас не будет конкретного направления для улучшения кода. Не занимайтесь рефакторингом, если сроки сдачи проекта почти сгорели — в этом случае нужно лишь заставить код работать, даже если он не способен работать в принципе.

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

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

Комменты

Добавить коммент