Введение в рефакторинг

Этой статьей я открываю новую рубрику под названием «Продвинутый php», где буду, например, рассматривать различные вопросы относительно рефакторинга кода (я имею в виду PHP) и приводить различные примеры и приемы рефакторинга. А начнем мы сегодня с самого простого - с определения рефакторинга, т.е. узнаем, что же это за понятие.

Любой программист рано или поздно сталкивается с этим понятием (или «техникой», если хотите), вот дошло дело и до меня.

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

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

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

А что дает рефакторинг в итоге? Просто очищенный код?

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

А как насчет оптимизации кода? Это тоже рефакторинг? Ведь при оптимизации кода поведение программы зачастую не изменяется (за исключением скорости выполнения).

А здесь я вынужден сказать: рефакторинг и оптимизация - это две разные вещи. И вот почему: при рефакторинге мы стараемся сделать так, чтобы код стал удобнее для понимания и его поддержки, а при оптимизации кода приходится делать такие вещи, которые приводят к обратному эффекту - понимабельность кода снижается, но за счет этого возрастает скорость его выполнения.

Еще раз подчеркнем: после проведения рефакторинга поведение программы не изменяется.

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

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





Читайте также:



5 Ответов на “Введение в рефакторинг”

  1. […] новичка до профессионала” открывает новую рубрику: Продвинутый PHP Нет времени прочесть? Поставьте закладку - потом […]

  2. ant

    Ошибка
    я имею ввиду PHP

    иметь в виду

  3. novice

    Спасибо, исправил :)

  4. met

    > Ошибка
    я имею ввиду PHP

    А чего ошибка? Может автор в значении “что имею, то и ввиду”

  5. Александр

    Интерсеные у вас материалы по теме рефакторинга опубликованы !
    Если не секрет, то сколько времени уходит на написание одного поста ?
    И также интересно, откуда черпаете информацию ? Сайты или литература ? Если литература, то что порекомендуете ?


© Copyright. . I-Novice. All Rights Reserved. Terms | Site Map