Вы также должны импортировать config.config_var, так как эта переменная принадлежит этому конкретному модулю
Martin Fowler, кажется, склоняется к маленькому, постепенному подходу рефакторинга. Однако после чтения его книги он действительно иногда делает некоторые решительные шаги, но только с модульными тестами для резервного копирования кода.
Рефакторинг является управляемой техникой для улучшения дизайна существующей кодовой базы. Его сущность применяет ряд маленьких сохраняющих поведение преобразований, каждый из который "слишком маленький, чтобы стоить сделать". Однако кумулятивный эффект каждого из этих преобразований является довольно значительным. Путем выполнения их в небольших шагах Вы снижаете риск представления ошибок. Вы также стараетесь не повреждать систему при выполнении реструктуризации - который позволяет Вам постепенно осуществлять рефакторинг систему за длительный промежуток времени. - Martin Fowler
Я пробую :) Одно убеждение, которому я должен сопротивляться больше всего, в то время как рефакторинг на самом деле вносит другие изменения по пути. Скажите, что я осуществляю рефакторинг некоторый код и вижу что-то несвязанное в коде. Я должен приложить сознательное усилие для не движения, "фиксируют" это также. Обратите внимание на него и идите дальше. С одной стороны, это - отвлечение от задачи под рукой. Это также заканчивает тем, что загрязнило Ваш массив изменений, таким образом, Ваше сообщение о фиксации теперь должно зарегистрировать несколько на вид случайных изменений.
Да, всегда. Я думаю, что реальная сущность рефакторинга выбирает который шаги запуститься с.
Я нахожу, что вещь с рефакторингом больших изменений безопасным способом состоит в том, чтобы всегда иметь довольно четкое изображение того, где Вы хотите пойти. Затем рассмотрите свою существующую систему и попытайтесь узнать, какие части можно представить, которые имеют наименьшее количество вероятности того, чтобы быть радикальным изменением. Затем можно представить их управляемым и хорошо протестированным способом.
Таким образом, то, что Вы делаете, должно работать в vincinity злобности. Не всегда нападая непосредственно от передней стороны, но иногда просто откалывая маленькие части. Обычно я ожидаю и только иду для "большого приза" после нескольких раундов откалывания в незначительной злобности. Но я знаю, где я хочу пойти.
Хорошая вещь о прокладывании себе путь состоит в том, что можно поддержать прогресс. Вы никогда "не останавливаете разработку, чтобы сделать рефакторинг". Возможно существуют случаи, где остановка является корректной ситуацией, но большую часть времени это не.
Идея здесь состоит в том, что, если Вы "запускаете" с превращения в наличные денежного приза, Вы будете тратить следующее X дней, делая тяжелую работу. И существует риск, возможно, Вы идете на попятный, или он не работает - или проводит 6 месяцев вместо недели. Если Вы сделаете то тяжелая работа сначала, превращая в наличные приз будет возможна с меньшим количеством риска. И Ваш код улучшится, когда Вы идете. Иногда можно решить, что выполнение половины задания было достаточно, начиная с понимания увеличений задач. Иногда Ваша идея того, где Вы хотели пойти, была немного испорчена, и можно перестроить цель, в то время как Вы прогрессируете.
Но его привлечение пойти прямо для вознаграждения.
Эмпирическое правило, которое я использую, осуществляют рефакторинг с тестами и только осуществляют рефакторинг столько же кода, сколько Вы уверены также.
В 60 минут Вы уверенный, что Ваш код делает точно, каково это должно быть. Вам было бы нужно много тестов для передачи. Я просто попытался бы получить движение того и затем идти дальше к следующему.
Я склонен осуществлять рефакторинг на больших шагах большую часть времени, таким образом, я вижу лес от деревьев. Это - вид "потока сознания" программирования. Пока у Вас есть своя последняя рабочая версия, безопасная в Вашем предпочтительном управлении исходным кодом...
это - то, где "красный, зеленый цвет, осуществляет рефакторинг" подход, полезно. На каждом этапе у Вас есть способность проверить, что поведение Вашего кода неизменно, и рефакторинг только должен интегрировать новое поведение.
Если у меня есть четкое изображение того, что я хочу сделать, и если я могу легко проверить, что ничего не повредил впоследствии, я делаю большие шаги.
Если рефакторинг более сложен, я пытаюсь разломать его на меньшие шаги и сделать тяжелое тестирование после каждого.
Я обычно осуществляю рефакторинг код, поскольку я изменяю его. Таким образом, вместо того, чтобы брать часть кода и переписать его при поддержании его функции, я переписываю его к новой функциональности и в процессе выполнения, таким образом, я улучшаю дизайн кода.
Часто это означает что к тому времени, когда я реализовал опцию, которой я был после того, как я не сделал полного и удовлетворительного рефакторинга старого кода. Это улучшено, хотя, и я знаю, что у меня будет время для улучшения его далее в следующий раз, когда я собираюсь изменить его функцию.
Для тестирования это означает, что я добираюсь для тестирования и рефакторинга и новой возможности одновременно, которая должна сэкономить некоторое время.
Это также означает, что я только провожу достаточно времени при рефакторинге для улучшения ситуации с обслуживанием, требуемой для той конкретной функции. Это должно помочь избежать по разработке и/или напрасно тратящий время, осуществив рефакторинг материал, который уже работает и преимущество привычки от лучшего дизайна. Путем фокусировки только на коде я изменился бы так или иначе, существует также высокая вероятность, я пересмотрю тот код в близкое время, чтобы сделать дальнейшие изменения, в то время как это находится в пользовательской продолжительности концентрации внимания.
Маленькие дискретные шаги - то, чем я являюсь самым довольным, хотя в некоторых точках это может быть тест моего самообладания для правления в том, что могло быть кровопролитием рефакторинга. Если я замечаю какие-либо улучшения (неважно, как большой), который мог быть сделан, я обращаю внимание на них и рассматриваю, как это было бы разделено на отдельные задачи рефакторинга. Плюс, имея сагу изменений в сообщении о фиксации не помогает.
NB. Кодовая база я продолжаю работать, довольно стара, и полна тех мистических ошибок, названных в честь ученых. Со значительными частями, все еще испытывающими недостаток в чем-либо даже около 50%-го тестового покрытия, это было бы небрежно для увлеканий.
Ага. Мне нравится проводить тесты постоянно, поэтому цепочка крошечных рефакторов работает хорошо. Мне действительно неудобно, что мой код ломается более чем на несколько минут за раз, и я обычно возвращаюсь, если мой код сломан, когда я иду домой ночью, переписывание на следующее утро ВСЕГДА работает лучше, чем попытки подобрать где Я был.