Я предпочитаю прагматичный подход. Вы сосредоточились на изучении тех частей системы, с которыми вам нужно взаимодействовать. Таким образом, вы открываете один кусочек головоломки за раз. Через некоторое время вы научитесь достаточно, чтобы увидеть большую картину.
Конечно, если есть какие-либо документы или наставник, чтобы познакомить вас с кодом и объяснить решения и архитектуру верхнего уровня, это необходимо сделать с самого начала.
Кроме того, выполнение пути выполнения кода от точки входа и функции обучения по функции будет трудоемким и неэффективным. Во-первых, человеческий мозг имеет ограниченную способность хранить и обрабатывать информацию для определенного уровня абстракции. Если вы ожидаете прочитать сотни функций и запомнить их (или, по крайней мере, их имена и где они), вы будете терпеть неудачу.
Как показывает опыт в других областях, не связанных с программированием (например, иностранные языки, работающие на некоторых машинах, выполнение рабочего процесса и т. Д.), Лучше всего, если вы получите сначала какой-нибудь общий фон, а затем возьмите кусочки, которые вы в правильном контексте. Вы изучаете элементы, которые вам нужны для ваших сценариев, понимают их использование, применяют технику и, наконец, запоминают их в зависимости от ситуации и вашего опыта. Это, безусловно, лучший способ.
Я могу предоставить аналогию. Когда вы изучаете иностранный язык, вы изучаете слова и выражения, основанные на их общности и внешности в определенных диалогах и сценариях, но, конечно, не путем чтения через словарь от a до z. То же самое с кодом.
Соглашаясь с Skeet, я бы хотел вызвать подход, который сначала фокусируется на большой картине, а затем переходит к деталям «Сверху вниз». – ESRogs