Как вы знакомитесь с кодовой базой, у которой нет документации?

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

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

8 ответов

Решение

На Slashdot была тема об этом год назад. Среди обычного хлама Slashdot есть несколько хороших ответов; Может быть, кто-то может извлечь их здесь.

Некоторые из них прорабатывают программу с помощью отладчика, Doxygen (конечно) (и связанных с ним инструментов, таких как ctags/etags/GNU Global), отказываясь от пары книг по этой теме: эффективная работа с Legacy Code от Michael. Перья и чтение кода: перспективы с открытым исходным кодом от Diomidis Spinellis.

И я лично рекомендую прочитать "Метод рефакторинга PG Wodehouse"; если ничего, по крайней мере, весело читать!

Прочитайте юнит-тесты. Нет юнит-тестов? Напишите несколько юнит-тестов.

Вы видели этот вопрос?

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

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

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

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

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

Получение инструмента, который генерирует документы API - это еще один вариант, о котором упоминали другие. Этот вид документации полезен только для справки. Бесполезно показывать, как и когда лучше всего использовать данный класс или метод.

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

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

и для справки вы можете проверить это, чувак, кажется, находится в более трудном положении, чем вы:

унаследовали-а-PHP-кошмар, где-начало

Если он достаточно мал, чтобы сделать это (скажем, 10000 строк или меньше), я добился значительных успехов в старых добрых распечатанных списках. Распечатайте код, возьмите маркеры и цветные флажки post-it и просмотрите список, набросайте заметки, найдите ссылки и соберите всю структуру. Идите куда-нибудь тихо, чтобы сделать это, и просто потратьте время, чтобы просмотреть код.

Если это написано в чем-то, что вы можете использовать ctags или что-то подобное, возьмите ноутбук, чтобы вы могли искать код.

Первое, что я всегда делаю (в VisualStudio), это создаю диаграмму классов каждого проекта в решении. Это позволяет мне увидеть графическое представление того, с чем я работаю.

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

Кроме того, если в коде есть запутанные фрагменты, которые вы не знаете, как он должен работать, запустите его через отладчик и выполните его. Я всегда стараюсь держать стек вызовов видимым, чтобы почувствовать различные пути кода.

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

Какой язык программирования? Насколько велика база кода (1k, 10k, 100k строк?)

В любом случае, я рекомендую использовать Doxygen для создания перекрестных ссылок HTML, которые легко просматривать.

Другие вопросы по тегам