Рефакторинг: Когда Вы знаете, что время и когда Вы делаете это?

Может быть, я кое-что здесь упускаю, но ... Почему вы «наведите курсор мыши» на «.menubar», а вы «mouseleave» на «.navx»?

У вас также есть четыре элемента с классом 'menubar'. Я думаю, что вы, вероятно, перекрываете свои действия JS.

5
задан Cristian Vat 13 December 2008 в 16:25
поделиться

16 ответов

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

Если Вы наследовали код, то я склонен думать, что существует 2 философских школы на том, что сделать с ним:

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

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

4
ответ дан 18 December 2019 в 06:13
поделиться

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

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

Удача Вам!

0
ответ дан 18 December 2019 в 06:13
поделиться

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

Вы закончили осуществлять рефакторинг при достижении некоторого запланированного уровня нормализации. Если это - просто общая уборка: 1,2 или 3 достаточно хорошо. Если Вы расширяете код, то 4 или 5 лучше. Если Вы действительно пытаетесь усилить существующую работу за длительный период, то 6 способ пойти.

Paul.

0
ответ дан 18 December 2019 в 06:13
поделиться

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

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

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

0
ответ дан 18 December 2019 в 06:13
поделиться

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

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

0
ответ дан 18 December 2019 в 06:13
поделиться

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

0
ответ дан 18 December 2019 в 06:13
поделиться
  1. Когда я готовлюсь вносить функциональное изменение в код (функция, исправление ошибки, производительность, безотносительно), я сначала спрашиваю меня, на что было бы похоже, был ли код идеально структурирован для внесения того изменения.

  2. Затем я осуществляю рефакторинг в том направлении

  3. Я теперь вношу функциональное изменение.

  4. Наконец, я осуществляю рефакторинг снова для чистки уродства, представленного моим изменением.

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

0
ответ дан 18 December 2019 в 06:13
поделиться

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

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

0
ответ дан 18 December 2019 в 06:13
поделиться

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

0
ответ дан 18 December 2019 в 06:13
поделиться

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

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

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

0
ответ дан 18 December 2019 в 06:13
поделиться

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

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

0
ответ дан 18 December 2019 в 06:13
поделиться

Когда Ваш код пахнет

2
ответ дан 18 December 2019 в 06:13
поделиться

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

2
ответ дан 18 December 2019 в 06:13
поделиться

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

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

2
ответ дан 18 December 2019 в 06:13
поделиться

Стандартный TDD путь является Red-Green-Refactor: сделайте тест, который перестал работать, напишите код, чтобы пройти тест, затем осуществите рефакторинг существующий код, все еще проходя тесты. Рефакторинг происходит после тестовой передачи и когда Вы находите код, который является слишком сложным или использует плохие шаблоны. Рефакторинг должен быть частью Вашего нормального, ежедневного процесса разработки и не дополнения в конце цикла разработки. Это работает лучше, я думаю, для хранения рефакторингов маленькими. При выполнении его, поскольку часть регулярного действия мешает коду бедных становиться слишком большим, прежде чем рефакторинг произойдет - по крайней мере идеально.

6
ответ дан 18 December 2019 в 06:13
поделиться

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

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

10
ответ дан 18 December 2019 в 06:13
поделиться
Другие вопросы по тегам:

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