Цитата(elusive @ Dec 19 2012, 05:27)
Гугл внятного ничего не ответил на мой вопрос. Больше года моя работа заключается в основном в чтении чужого кода и все острее ощущается нехватка трюков для его эффективного чтения.
Кода более 200 метров, язык си, исходников около 2500. Я работаю над этим один.
Как грамотно вникать в работу сложой большой софт-системы с несколькими слоями интерфесов, дефайнов, call-back-ов и т.д., получить комплексное представление?
Конспектировать на листочке, рисовать в каком-нибудь visio блок-схемы и наколько подробные? Или есть какие-то специальные удобные программы для этого?
Поделитесь опытом, кто как это делает. Ведь разбираться в чужом коде рано или поздно приходится любому программисту.
200 метров?! Дистрибутив линукса, что-ль хотите весь прочитать в исходниках?
Лучше софтины
Understand ничего похоже не придумано.
Но и она бысто сдувается когда дело доходит до многоэтажных макросов и динамических драйверов.
Поэтому я обычно использую сразу много тулсов.
Во первых все 2500 файлов скорее всего в каждом конкретном случае не используются.
Тогда удаляются все файлы которые реально не компилируются в проект.
Потом решается что нужно действительно изучать, а что нет. Изучить все 2500 практически нереально.
Потом то что осталось переформатируется в свою привычную разметку.
Скажем я не перевариваю форматироование текстов принятое в опенсорсах под GNU GPL.
Потом для особо сложных текстов делается рефакторинг: убираю макросы, отделяю константы от переменных, переименовываю функции и переменные и т.д.
Особо неприятная вещь в сорсах это наличие жестких и мягких линков(ссылок) на одни и те же файлы но под разными именами в линуксе.
Это чисто наказание, из-за чего под виндой с анализом проектов сделанных под линукс может крыша съехать.
Ну и вот после этого уже усаживаюсь читать.
Но даже этого часто бывает недостаточно. Ну тогда уже надо идти по шагам на целевой платформе с помощью JTAG-а или в симуляторе.