0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Рассказываем, как начинающему разработчику быстро научиться читать чужой код и какие вообще есть подходы для этого.</strong></p>
1
<p><strong>Рассказываем, как начинающему разработчику быстро научиться читать чужой код и какие вообще есть подходы для этого.</strong></p>
2
<p><em>Это адаптированный перевод статьи Джозефа Мусандо, аналитика информационной безопасности и<a>автора блога на Medium</a>. Повествование ведется от имени Джозефа.</em></p>
2
<p><em>Это адаптированный перевод статьи Джозефа Мусандо, аналитика информационной безопасности и<a>автора блога на Medium</a>. Повествование ведется от имени Джозефа.</em></p>
3
<p>Чем больше вы программируете, тем лучше понимаете код - как свой, так и чужой. Это замкнутый круг: чем больше вы программируете, тем больше потребляете кода, а значит, больше программируете. Вы быстрее работаете и быстрее учитесь.</p>
3
<p>Чем больше вы программируете, тем лучше понимаете код - как свой, так и чужой. Это замкнутый круг: чем больше вы программируете, тем больше потребляете кода, а значит, больше программируете. Вы быстрее работаете и быстрее учитесь.</p>
4
<p>Недавно коллега-самоучка пожаловался, что теряется в чужом коде. Он сказал, что прекрасно понимает, что некоторые разработчики пишут код, который очень сложно читать практически всем. При этом он не мог читать и хороший код. И у меня есть для него несколько хороших советов.</p>
4
<p>Недавно коллега-самоучка пожаловался, что теряется в чужом коде. Он сказал, что прекрасно понимает, что некоторые разработчики пишут код, который очень сложно читать практически всем. При этом он не мог читать и хороший код. И у меня есть для него несколько хороших советов.</p>
5
<h2>Содержание</h2>
5
<h2>Содержание</h2>
6
<ul><li><a>Шаг 1. Проанализируйте хоть что-то в непонятном коде</a></li>
6
<ul><li><a>Шаг 1. Проанализируйте хоть что-то в непонятном коде</a></li>
7
<li><a>Шаг 2. Повторите первый шаг</a></li>
7
<li><a>Шаг 2. Повторите первый шаг</a></li>
8
<li><a>Как определить пол цыпленка</a></li>
8
<li><a>Как определить пол цыпленка</a></li>
9
</ul><h2>Шаг 1. Проанализируйте хоть что-то в непонятном коде</h2>
9
</ul><h2>Шаг 1. Проанализируйте хоть что-то в непонятном коде</h2>
10
<p>Наверняка в коде есть хотя бы одно место, которое вам понятно. Посмотрите на этот участок и попробуйте отследить все действия в обратном порядке, начиная с конца. Что привело к такому результату и каким был предыдущий шаг?</p>
10
<p>Наверняка в коде есть хотя бы одно место, которое вам понятно. Посмотрите на этот участок и попробуйте отследить все действия в обратном порядке, начиная с конца. Что привело к такому результату и каким был предыдущий шаг?</p>
11
<p>Например, вы знаете, что программа выдает список фильмов. Найдите функцию, которая собирает готовый список. Затем сделайте шаг назад и попробуйте понять, по какому принципу фильмы располагаются в списке. Потом определите, где код берет названия фильмов, и так далее.</p>
11
<p>Например, вы знаете, что программа выдает список фильмов. Найдите функцию, которая собирает готовый список. Затем сделайте шаг назад и попробуйте понять, по какому принципу фильмы располагаются в списке. Потом определите, где код берет названия фильмов, и так далее.</p>
12
<p>Так вы поймете, где и почему вызываются функции, как они меняют данные. Приятный бонус: вы поймете общий стиль автора кода и вам будет легче читать другой подобный код.</p>
12
<p>Так вы поймете, где и почему вызываются функции, как они меняют данные. Приятный бонус: вы поймете общий стиль автора кода и вам будет легче читать другой подобный код.</p>
13
<p>Конечно, рассмотрев только один участок кода, вы не решили основную проблему и не поняли весь код целиком. И все же теперь вы ближе к цели. Это как скалолазание: вы еще не подтянулись наверх, но уже ищете глазами нужные вам зацепы.</p>
13
<p>Конечно, рассмотрев только один участок кода, вы не решили основную проблему и не поняли весь код целиком. И все же теперь вы ближе к цели. Это как скалолазание: вы еще не подтянулись наверх, но уже ищете глазами нужные вам зацепы.</p>
14
<h2>Шаг 2. Повторите первый шаг</h2>
14
<h2>Шаг 2. Повторите первый шаг</h2>
15
<p>На самом деле, это и есть вся стратегия. Нужно найти понятное вам место в коде, хорошенько его разобрать и найти новый кусочек кода для анализа. Когда вы разбираетесь в том, как работает один участок кода, вам тут же становится понятен другой, с ним связанный. Так по цепочке вы можете перебрать хоть всю кодовую базу, если захотите.</p>
15
<p>На самом деле, это и есть вся стратегия. Нужно найти понятное вам место в коде, хорошенько его разобрать и найти новый кусочек кода для анализа. Когда вы разбираетесь в том, как работает один участок кода, вам тут же становится понятен другой, с ним связанный. Так по цепочке вы можете перебрать хоть всю кодовую базу, если захотите.</p>
16
<p>Это возможно благодаря общей философии программирования, согласно которой один участок кода выполняет одну задачу. Большинство программ это просто<a>набор подзадач</a>, именно так нам и нужно рассматривать любой незнакомый код.</p>
16
<p>Это возможно благодаря общей философии программирования, согласно которой один участок кода выполняет одну задачу. Большинство программ это просто<a>набор подзадач</a>, именно так нам и нужно рассматривать любой незнакомый код.</p>
17
<p>И не забываем про насмотренность - она развивается со временем, и постепенно вы сможете читать и понимать вообще любой код. Анализ эталонных решений - фактор, который определяет скорость и эффективность обучения. Второй такой же важный фактор - регулярная практика.</p>
17
<p>И не забываем про насмотренность - она развивается со временем, и постепенно вы сможете читать и понимать вообще любой код. Анализ эталонных решений - фактор, который определяет скорость и эффективность обучения. Второй такой же важный фактор - регулярная практика.</p>
18
<p>Давайте проиллюстрируем всю идею простым примером - определением пола цыплят.</p>
18
<p>Давайте проиллюстрируем всю идею простым примером - определением пола цыплят.</p>
19
<h2>Как определить пол цыпленка</h2>
19
<h2>Как определить пол цыпленка</h2>
20
<p>Перед вами стоит куча цыплят, и на первый взгляд вы не видите между ними никакой разницы. Но тут ваш ментор говорит: "Бери их по одному и попробуй определить пол". Сначала вам кажется, что все ответы будут совершенно случайными. Но ментор считает иначе:</p>
20
<p>Перед вами стоит куча цыплят, и на первый взгляд вы не видите между ними никакой разницы. Но тут ваш ментор говорит: "Бери их по одному и попробуй определить пол". Сначала вам кажется, что все ответы будут совершенно случайными. Но ментор считает иначе:</p>
21
<blockquote><p>После каждого случайного ответа ментор дает вам обратную связь: "да" или "нет". Системы не наблюдается, но вы продолжаете тренировку. А потом происходит нечто невероятное. Ваши ответы все чаще попадают в точку. Вы становитесь все лучше в определении пола цыплят, хотя и не знаете, почему. Вам по-прежнему кажется, что ваши ответы случайные, но на этот раз какая-то магия делает их верными.</p>
21
<blockquote><p>После каждого случайного ответа ментор дает вам обратную связь: "да" или "нет". Системы не наблюдается, но вы продолжаете тренировку. А потом происходит нечто невероятное. Ваши ответы все чаще попадают в точку. Вы становитесь все лучше в определении пола цыплят, хотя и не знаете, почему. Вам по-прежнему кажется, что ваши ответы случайные, но на этот раз какая-то магия делает их верными.</p>
22
</blockquote><p>После большого количества повторений ваш мозг усваивает новые паттерны, хотя вы этого и не осознаете. Если тренировка продолжается, ваш мозг как бы лучше настраивается и в конце концов может давать довольно точные ответы на основании данных, которые сначала казались лишь информационным шумом. В общем и целом история с непонятным кодом - точно такая же, как и с анализом пола цыплят.</p>
22
</blockquote><p>После большого количества повторений ваш мозг усваивает новые паттерны, хотя вы этого и не осознаете. Если тренировка продолжается, ваш мозг как бы лучше настраивается и в конце концов может давать довольно точные ответы на основании данных, которые сначала казались лишь информационным шумом. В общем и целом история с непонятным кодом - точно такая же, как и с анализом пола цыплят.</p>