С++: код с самого начала моего проекта значительно меньшего качества

Несколько месяцев назад я начал довольно большой проект 2D-движка, и я начал замечать:

Код с первого или двух месяцев отличается от предыдущего:

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

  • Код выглядит так, как будто его качество было значительно ниже

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

Теперь, по моим вопросам:

  • Это обычная ситуация, даже в крупных коммерческих проектах?

  • Должен ли я рассмотреть возможность инвестирования (много времени) в рефакторинг и, возможно, даже переписывание затронутого кода?

  • Нормально ли, что по мере роста и изменения проекта большие части кода должны быть реорганизованы или переписаны с нуля? Это плохо?

Ответы

Ответ 1

Это обычная ситуация, даже в крупных коммерческих проектах?

Да.

Должен ли я рассмотреть возможность инвестирования (много времени) в рефакторинг и, возможно, даже переписывание затронутого кода?

Вы тоже сделаете это завтра тоже?

Нет. Если вы на самом деле не работаете над кодом, который хотите реорганизовать.

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

Да.

Это плохо?

Было бы намного легче, если бы мы, где все идеально, да.

Ответ 2

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

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

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

Ответ 3

Большой урок из этого опыта: вы поправляетесь. Или, по крайней мере, ты меняешься. Конечно, с сегодняшнего дня код, который вы пишете сегодня, выглядит лучше для вас. Если код, который вы написали назад, выглядит сегодня плохо - сделайте его лучше. Ваша ответственность сегодня - это не только код, который вы пишете сегодня; это вся база кода. Так что сделайте это правильно - и радуйтесь, что вы поправляетесь.

Ответ 4

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

Обновляйте свой код при возврате и коснитесь его. Не забудьте написать блок-тесты перед его настройкой.

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

Помните, что доставка - это особенность.

Ответ 5

Это обычная ситуация, даже в крупных коммерческих проектах?

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

Должен ли я рассмотреть возможность инвестирования (много времени) в повторный факторинг и, возможно, даже переписывание затронутого кода?

Делать вещи лучше никогда не повредит: -).

Нормально ли, что по мере роста и изменения проекта большие части кода должны быть переупознаны или переписаны с нуля? Это плохо?

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

Ответ 6

Фред Брукс писал: "Постройте, чтобы выбросить, вы все равно". Хотя это не так верно, как раньше, это далеко не редкость, чтобы не понимать проблему до тех пор, пока вы не начнете ее работать.