2009-06-09 4 views
15

Вы делаете это, когда находитесь в коде, делая что-то еще?Когда вы используете код рефакторинга?

Когда ваш менеджер одобряет это? (Кажется, этого никогда не бывает)

Я думаю, что это зависит от влияния изменений. Если я изменю код и он ничего не влияет за пределы класса, для меня это малоэффективно.

Что это за изменение дизайна? Когда он воздействует на объекты X или X?

Мне просто интересно, как другие команды решать этот ...

+0

Интересный вопрос. +1 – shahkalpesh

ответ

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

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

+0

Когда код пересматривается? –

+1

Прежде чем он будет совершен. –

+0

Весь код слияния также является фактором, но я не спрашивал об этом? – eschneider

0

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

0

Процессы обзора кода часто помогают в этом. Если я коснусь некоторого кода, он будет рассмотрен, рецензент спрашивает: «Почему вы это сделали?», Я говорю: «Мне пришлось из-за (вставить уродство здесь)». Это признак того, что код должен быть реорганизован сразу после завершения обзора.

2

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

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

+0

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

1

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

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

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

1

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

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

0

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

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

0

Refactor при необходимости:

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

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

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

0

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

1

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

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

0

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

0

Принципы, которые следуют DRY, яростно часто будут спусковым механизмом для меня в рефакторе.

0

Недостаточно часто, тем самым создавая технический долг.

Сад, но так.

Делайте, как я говорю, а не как команда, над которой я работаю.

2

Я нахожу, что рефакторинг при пересмотре кода (предположительно для добавления/расширения функциональности) более 3 месяцев после его написания.

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

+0

Мне нравится этот ответ. Я собирался предложить, когда количество повторного использования кода ниже определенного уровня. 3 месяца - более чем достаточно времени. – monksy

2

как только все тесты выполняются.

Смежные вопросы