Вы осуществляете рефакторинг в небольших шагах?

Вы также должны импортировать config.config_var, так как эта переменная принадлежит этому конкретному модулю

6
задан skaffman 30 October 2011 в 23:33
поделиться

10 ответов

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

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

6
ответ дан 8 December 2019 в 17:28
поделиться

Я пробую :) Одно убеждение, которому я должен сопротивляться больше всего, в то время как рефакторинг на самом деле вносит другие изменения по пути. Скажите, что я осуществляю рефакторинг некоторый код и вижу что-то несвязанное в коде. Я должен приложить сознательное усилие для не движения, "фиксируют" это также. Обратите внимание на него и идите дальше. С одной стороны, это - отвлечение от задачи под рукой. Это также заканчивает тем, что загрязнило Ваш массив изменений, таким образом, Ваше сообщение о фиксации теперь должно зарегистрировать несколько на вид случайных изменений.

4
ответ дан 8 December 2019 в 17:28
поделиться

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

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

Таким образом, то, что Вы делаете, должно работать в vincinity злобности. Не всегда нападая непосредственно от передней стороны, но иногда просто откалывая маленькие части. Обычно я ожидаю и только иду для "большого приза" после нескольких раундов откалывания в незначительной злобности. Но я знаю, где я хочу пойти.

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

Идея здесь состоит в том, что, если Вы "запускаете" с превращения в наличные денежного приза, Вы будете тратить следующее X дней, делая тяжелую работу. И существует риск, возможно, Вы идете на попятный, или он не работает - или проводит 6 месяцев вместо недели. Если Вы сделаете то тяжелая работа сначала, превращая в наличные приз будет возможна с меньшим количеством риска. И Ваш код улучшится, когда Вы идете. Иногда можно решить, что выполнение половины задания было достаточно, начиная с понимания увеличений задач. Иногда Ваша идея того, где Вы хотели пойти, была немного испорчена, и можно перестроить цель, в то время как Вы прогрессируете.

Но его привлечение пойти прямо для вознаграждения.

3
ответ дан 8 December 2019 в 17:28
поделиться

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

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

0
ответ дан 8 December 2019 в 17:28
поделиться

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

1
ответ дан 8 December 2019 в 17:28
поделиться

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

0
ответ дан 8 December 2019 в 17:28
поделиться

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

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

0
ответ дан 8 December 2019 в 17:28
поделиться

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

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

Для тестирования это означает, что я добираюсь для тестирования и рефакторинга и новой возможности одновременно, которая должна сэкономить некоторое время.

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

0
ответ дан 8 December 2019 в 17:28
поделиться

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

NB. Кодовая база я продолжаю работать, довольно стара, и полна тех мистических ошибок, названных в честь ученых. Со значительными частями, все еще испытывающими недостаток в чем-либо даже около 50%-го тестового покрытия, это было бы небрежно для увлеканий.

0
ответ дан 8 December 2019 в 17:28
поделиться

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

0
ответ дан 8 December 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: