Наш код отстой, и я бессильна его исправить. Помогите! [закрыто]

Наш код отстой. На самом деле, позвольте мне уточнить это. Наш старый код отстой. Его сложно отлаживать, и он полон абстракций, которые мало кто понимает или даже помнит. Буквально вчера я провел час отладки в области, в которой я работал более года , и подумал: «Ух ты, это действительно больно». Это не чья-то вина - я уверен, что изначально все это имело смысл. Хуже всего, как правило, это просто работает ... при условии, что вы не просите его делать что-либо за пределами его зоны комфорта.

Наш новый код довольно хорош. Я думаю, что мы делаем там много хорошего. Это ясно, последовательно и (надеюсь) в обслуживании. Мы' у нас есть сервер Hudson, работающий для непрерывной интеграции, и у нас есть начало набора модульных тестов. Проблема в том, что наше руководство сосредоточено на написании нового кода. Нет времени давать Старому Коду (или даже старому Новому Коду) TLC, в котором он так отчаянно нуждается. В любой момент наше отставание в разработке (для шести разработчиков) содержит около 140 элементов и около десятка дефектов. И эти цифры не сильно меняются. Мы добавляем вещи так быстро, как только можем их сжечь.

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

  • Что я могу сделать, чтобы задачи по обслуживанию и рефакторингу получили достаточно высокий приоритет для работы?
  • Существуют ли какие-либо стратегии, специфичные для C ++, которые вы используете, чтобы помочь предотвратить быстрое гниение Нового кода?
26
задан Michael Kristofik 1 September 2010 в 13:32
поделиться

2 ответа

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

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

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

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

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

Вы можете создавать диаграммы и эскизы того, как работает новый код и как классы и функции связаны друг с другом. Вы можете использовать FreeMind или Dia. И я определенно согласен с документированием и комментированием вашего кода. У меня когда-то тоже была с этим проблема. Я написал класс шрифта для J2ME для своего языка. Это было ужасно по тем причинам, которые, возможно, вы также можете увидеть в своем коде.

  • Без комментариев или документации
  • Менее объектно-ориентированный
  • Плохие имена переменных/функций
  • ...

Но через несколько месяцев я был вынужден написать все заново. Теперь я научился использовать осмысленные имена переменных, которые иногда бывают ОЧЕНЬ длинными. писать комментарии больше, чем писать коды. И использование диаграмм для классов проекта и их взаимосвязей.

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

Надеюсь, это помогло.

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

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