как работать с кодом спагетти или завершить его? - PullRequest
2 голосов
/ 14 января 2011

Q:

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

Ответы [ 5 ]

6 голосов
/ 14 января 2011

Начать рефакторинг.Это не только сделает код более читабельным, но и даст вам лучшее понимание того, как он работает и что делает.

3 голосов
/ 14 января 2011

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

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

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

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

3 голосов
/ 14 января 2011

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

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

1 голос
/ 14 января 2011

Я бы также написал модульные тесты и рефакторинг, как сказал codymanix.Это делает пару вещей:

  1. Во время рефакторинга у вас будет некоторая проверка, что ваш рефакторинг не сломает вещи.
  2. Написание тестов - хороший способ изучения предметной области.знания, встроенные в код.

Конечно, есть неотъемлемая часть catch-22 с добавлением модульных тестов к спагетти-коду: обычно сложно провести модульное тестирование, и вам необходимо провести его реорганизациючтобы сделать это тестируемым.Но если вы идете понемногу и начинаете с низко висящих фруктов, обычно вы можете сделать их читабельными.

0 голосов
/ 14 января 2011

Удалите существующий код и начните заново.
Это требует гораздо меньших усилий для сравнения.

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

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