2009-09-01 4 views
5

Иногда нужно копаться в чужом коде, понимать его и, возможно, реорганизовывать/исправить. Поэтому мне интересно, какие инструменты/методы вы используете для этого? Речь идет не о каком-либо конкретном языке или платформе, а о некоторых рекомендациях в целом.
Мне самому очень удобно запускать данный код под отладчиком (если это возможно, конечно), установить контрольные точки и пройти через код.
Также я использовал несколько инструментов UML с функциями обратной инженерии, чтобы увидеть общую картину. Визуализация работает очень хорошо для меня.
Есть один инструмент, который я использовал совсем немного: Understand. Это не инструмент UML, но у него есть куча визуализации для кода. Например, блок-схема управления для функции, которая не является частью UML, но иногда она очень полезна.
Я слышал, что иногда люди пишут тесты на код, который они хотят узнать, но он не работает для меня. Иногда код, который я хочу понять, не очень проверен.
Существуют и другие инструменты, такие как профайлеры, контрольно-измерительные приборы, регистраторы и т. Д. Использует ли кто-нибудь его с успехом? И как?
С чего начать первое использование? Что дальше?
Инструменты и рекомендации для понимания чужого кода

ответ

1

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

0

Вы ищете высокоуровневую структуру, такую ​​как модули, пространства имен и классный дизайн? Или вы пытаетесь понять внутренности классов, например. как работают определенные строки кода? Это два различных инструмента анализа.

+0

Оба. Для меня легче понять код, когда я вижу большую картину, а затем иду на низком уровне. – Max

1

Обычно я делю эти виды запросов на 2 лагеря:

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

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

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

0

Вид конкретной платформы, но ReSharper отлично подходит для дразнения скрытого значения кода .NET. Мне нравится функция «Find Usages Advanced», в которой вы можете искать наборы, получатели, реализации и т. Д.

1

Выезд nWire.Это плагин Eclipse, в настоящее время для Java & PHP, который анализирует ваш код и предлагает инструменты для поиска, визуализации и поиска кода. Инструмент состоит в понимании ассоциаций в вашем коде: иерархии классов, вызовы, экземпляры и многое другое.

Мне очень полезно копать в кучи кода (BTW, для меня даже мой собственный код становится отчужденным после нескольких месяцев, не касаясь его).

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