Как ограничить сам от подавляющего желания переписать все?

43
задан 4 revs, 2 users 98% 27 July 2010 в 15:39
поделиться

20 ответов

Я - большой поклонник вхождения в списки!

, Как только убеждение берет Вас для переписывания чего-то - проводят 10 минут, входя в список вещей та перезапись потребности. Следуйте за всеми переулками, которые берут Вас далее в код, которому необходимо уделять внимание, и перечислите тех, также.

, Надо надеяться, в относительно коротком промежутке времени у Вас будет одна из двух вещей:

  • действительно длинный список А, который полностью помещает Вас от желания переписать что-либо когда-либо снова.
  • список А, который на самом деле не является, что долго, итак, почему бы не удовлетворить свои желания и идут для перезаписи?!
25
ответ дан Chris Roberts 26 November 2019 в 22:35
поделиться

Запишите больше модульных тестов только, чтобы узнать, что код работает превосходный.

, Если у Вас все еще есть желание переписать его, у Вас будут некоторые тесты, чтобы узнать, что Ваш переписанный код теперь перестал работать;)

1
ответ дан Drejc 26 November 2019 в 22:35
поделиться

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

1
ответ дан Din 26 November 2019 в 22:35
поделиться

IDon't думают, что НЕОБХОДИМО остановить себя от этого. Главным образом, если Вы СОПЕРЕЖИВАЕТЕ большой перезаписи, это главным образом корректно, чтобы сделать. Я безумно не соглашаюсь с Joel Spolsky на этой вещи...

, Хотя это - один из немногие места, где я не соглашаюсь с ним...;)

1
ответ дан Thomas Hansen 26 November 2019 в 22:35
поделиться

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

1
ответ дан M. Utku ALTINKAYA 26 November 2019 в 22:35
поделиться

Если это - некоторый код, Вы наследовались, начните делать код Вашим собственным. Запишите модульные тесты, затем осуществите рефакторинг.

2
ответ дан David Nehme 26 November 2019 в 22:35
поделиться

Joel имеет статья об этом:

существует тонкая причина, что программисты всегда хотят выбросить код и запуститься. Причина состоит в том, что они думают, что старый код является путаницей. И вот интересное наблюдение: они, вероятно, неправы .

2
ответ дан Dan Dyer 26 November 2019 в 22:35
поделиться

Я никогда не работал нигде особенно гибкий, поэтому что я делаю:

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

2) существует разумная фиксация без основной перезаписи. Примените фиксацию, запустите тесты, регистрируйте ее, отметьте ошибку, как зафиксировано.

3) Теперь, повысьте новую ошибку/проблему (запрос улучшения), обрисовав в общих чертах предложенную перезапись и как это улучшило бы код (более простой? более удобный в сопровождении? уменьшает связь? выполнение влияния или использование ресурса?). Присвойте его мне, CC, который любой заинтересовал тем битом кода.

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

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

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

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

3
ответ дан Steve Jessop 26 November 2019 в 22:35
поделиться

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

проблема с вышеупомянутым оператором состоит в том, что как программист/разработчик Вы будете ВСЕГДА , имеют другие вещи заставить себя напряженно трудиться. Просто оставьте его в низкоприоритетном списке things-do, поэтому когда Вы боретесь с некоторой работой, можно всегда сохранять ритм, идущий с перезаписью.

3
ответ дан Mike B 26 November 2019 в 22:35
поделиться
  1. перечитанный "Рефакторинг".
  2. Берут листок бумаги и перечисляют список "Неприятных запахов".
    (для каждого запаха в BadSmells () {
    печать smell.name;
    }
  3. Добавляют комментарии к коду включая объект (объекты) из списка.
    , в то время как (odorPersists ()) {
  4. Работа через список, сфокусированный на лазере на одном запахе за один раз.
    }
5
ответ дан dkretz 26 November 2019 в 22:35
поделиться

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

А хороший начинающий при занятии большими рефакторингами на маленьких этапах в sourcemaking.com :

необходимо сделать как Hansel и Gretel и грызть вокруг краев, немного сегодня, немного больше завтра

5
ответ дан Ken 26 November 2019 в 22:35
поделиться

Это - не совсем ответ, но чтение красивой статьи Самовлюбленность Небольших Различий в Коде могло бы помочь.

7
ответ дан ShreevatsaR 26 November 2019 в 22:35
поделиться

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

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

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

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

7
ответ дан Bill Karwin 26 November 2019 в 22:35
поделиться

Импульс переписать справедлив, при условии, что:

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

Однако необходимо сбалансировать процесс перезаписи с устойчивости меры унаследованного кода.
, "Если это не повреждается, не фиксируйте его";)

8
ответ дан VonC 26 November 2019 в 22:35
поделиться

, Как ограничить one’s сам от подавляющего желания переписать все?

Стареют*

, Поскольку это произошло со мной, я постепенно терял желание переписать все. Почему?

  • , Как только Вы сделали его несколько раз, Вы понимаете, что часто заканчиваете проигрывающие материально, чем Вы запустили.
  • , Даже если Вы - подарок бога программированию и Вашей блестящей перезаписи, не представляет новых ошибок, Вы просто не заметите или реализуете приблизительно 30% маленьких функций/ошибок пограничного случая, на которые полагаются вещи. Это будет стоить Вам месяцев в фиксации
  • , Ничто не стирает Вашу иррациональную эйфорию как время. Часто это - печальная потеря, но в этом случае, это - победа.

* (больше опыта может также быть подходящей заменой при недостатке в свободном времени для старения)

10
ответ дан Orion Edwards 26 November 2019 в 22:35
поделиться

Самый незабываемый проект этого вида для меня произошел приблизительно 4 года назад, когда я был призван в удаленный офис для "помогания" с проектом, который был должен за 1 неделю для основного представления клиенту и не работал еще вообще. Проект был, прежде всего, не поддержан в Индию, и IMO, отказ управления проектами привел к тонне запутанного кода, который был слишком фрагментирован, чтобы когда-либо работать правильно в его текущей форме.

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

основные улучшения кода включали:

  • Приложение именования стандартов
  • Перемещенный в управление исходным кодом
  • Разработка процесса сборки
  • Документация отдельных компонентов

большую часть исходного кода оставили на месте, но просто переместили и реорганизовали / пересмотренный для создания его устойчивым в долгосрочной перспективе. Это была неделя ада? Уверенный. Это делало проект более успешным? Да.

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

13
ответ дан Chris 26 November 2019 в 22:35
поделиться

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

17
ответ дан Paul Tomblin 26 November 2019 в 22:35
поделиться

Лично, это - то, где программное обеспечение отслеживания ошибок, такое как JIRA или Bugzilla входит для размещения со мной.

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

- я делаю только, какие потребности быть сделанным исправляют их, но проблема документируется и будет устранена вовремя.

- Нельзя сказать, что маленькие разбитые окна должны быть обработаны этот путь; маленькие проблемы должны всегда закрепляться на контакте, по моему скромному мнению.

4
ответ дан javamonkey79 26 November 2019 в 22:35
поделиться

Рефакторинг только в том случае, если ваш начальник / компания действительно поощряет это, иначе вам придется часто уделять дополнительное время код до совершенства ... Пока кто-то менее преданный не коснется его снова.

0
ответ дан 26 November 2019 в 22:35
поделиться

Исходное предположение: вы уже «фиксируете рано, фиксируете часто».

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

Готовность остановиться, выбросить наполовину отрефакторную ветвь и сделать это неприятным, но быстрым способом, где это уместно, является ключевым моментом.

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

0
ответ дан 26 November 2019 в 22:35
поделиться
Другие вопросы по тегам:

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