Pull to refresh

Comments 6

Что мне, кстати, всегда не нравилось, так это одинаковый «визуальный вес» файлов с кодом для всех компонентов системы. В реальной жизни всё не так — ты смотришь на автомобиль и видишь, что вот это — двигатель и он важен, без него машина не поедет, а вот это — пепельница, она не очень важна, даже если она заполнена или сломана — машина всё-равно будет ехать не хуже. В коде же у нас будут классы Engine и Ashtray, на каждый из которых будет приходиться по файлу, причём даже по таким характеристикам как количество методов, связи с другими модулями и т.д. они могут быть примерно похожи. И как тут быстро понять, что важно, а что нет?
Можно попробовать оценить степень важности, построив дерево вызовов методов этого класса, диаграммы наследования… Мне нравятся диаграммы построенные doxygen + graphviz. Хотя на очень крупных проектах эта связка не работает (или я не научился ее правильно настраивать, что более вероятно).

Да и без оценки важности кода, графы вызовов методов, функций, использования классов полезны, когда разбираешься в коде проекта.
Что мне, кстати, всегда не нравилось, так это одинаковый «визуальный вес» файлов с кодом для всех компонентов системы.

А что предлагаете в качестве решения этой проблемы?
Ничего не предлагаю, когда разбираюсь с кодом — рисую себе квадратики различного размера, одни под другими и провожу между ними стрелочки разной толщины. Какой-то вменяемой автоматизации этого процесса не представляю.
Огромное спасибо за систематизацию материала. Даже удивляюсь, что мало комментариев к статье. Возможно, это означает, что добавить нечего :) Я бы только сделал примеры более абстрактными, не акцентировался бы на UI. Хотя это, скорее, личное предпочтение — сам занимаюсь серверами.

Вообще, тема чтения кода — одна из самых сложных в разработке. Особенно когда систему пишут сотни людей. Постоянно инспектирую чужой код из разных подсистем и на разных языках. Занятие зачастую противное, но зато как приятно, когда находишь явный баг!
Sign up to leave a comment.