HTML Diff
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>