Введение в рефакторинг
Этой статьей я открываю новую рубрику под названием «Продвинутый php», где буду, например, рассматривать различные вопросы относительно рефакторинга кода (я имею в виду PHP) и приводить различные примеры и приемы рефакторинга. А начнем мы сегодня с самого простого - с определения рефакторинга, т.е. узнаем, что же это за понятие.
Любой программист рано или поздно сталкивается с этим понятием (или «техникой», если хотите), вот дошло дело и до меня.
Вообще, слово «рефакторинг» - это английское refactoring, а те, кто знает английский, скажут: ing-овое окончание может означать как минимум два случая: это существительное (со смыслом какого-то глагола) или глагол (активное определение). Но Вы сюда не английский пришли изучать (потому что, я думаю, уже его знаете), поэтому перейдем к делу - у рефакторинга я выделяю два значения:
- изменение, которое подвергается над каким-то участком кода с целью сделать его легче для понимания и дальнейшей модификации без изменения его поведения.
- реструктуризация всего программного кода в результате применения различных видов изменений с целью сделать программный код легче для понимания и изменения (а может быть и легкой оптимизации) без изменения (извиняюсь за тавтологию) поведения всей программы в целом.
Второе значение очень похоже на первое, но суть его в том, что Вы можете часами провести время, улучшая код Вашей программы, применяя при этом серию из нескольких приемов рефакторинга.
А что дает рефакторинг в итоге? Просто очищенный код?
Ну я бы сказал не просто очищенный, а очищенный с умом. Т.е. очищенный намного эффективнее, чем если бы мы не применяли какие-то техники (приемы). Со временем, набравшись опыта, программер начинает понимать, в каком месте какой прием рефакторинга ему стоит применить для достижения наиболее эффективного результата.
А как насчет оптимизации кода? Это тоже рефакторинг? Ведь при оптимизации кода поведение программы зачастую не изменяется (за исключением скорости выполнения).
А здесь я вынужден сказать: рефакторинг и оптимизация - это две разные вещи. И вот почему: при рефакторинге мы стараемся сделать так, чтобы код стал удобнее для понимания и его поддержки, а при оптимизации кода приходится делать такие вещи, которые приводят к обратному эффекту - понимабельность кода снижается, но за счет этого возрастает скорость его выполнения.
Еще раз подчеркнем: после проведения рефакторинга поведение программы не изменяется.
Рефакторинг можно проводить и сразу в процессе написания нового кода. Т.е. написали мы функцию и сразу отрефакторили ее в соответствии с остальным кодом программы.
Вот мы и определились с понятием. В следующий раз (в следующей статье в этой рубрике) мы узнаем, какие проблемы встречаются на пути рефакторинга и когда рефакторить код вообще не стоит.
[…] новичка до профессионала” открывает новую рубрику: Продвинутый PHP Нет времени прочесть? Поставьте закладку - потом […]
Ошибка
я имею ввиду PHP
иметь в виду
Спасибо, исправил
> Ошибка
я имею ввиду PHP
А чего ошибка? Может автор в значении “что имею, то и ввиду”
Интерсеные у вас материалы по теме рефакторинга опубликованы !
Если не секрет, то сколько времени уходит на написание одного поста ?
И также интересно, откуда черпаете информацию ? Сайты или литература ? Если литература, то что порекомендуете ?