HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p><em>Это перевод статьи<a>7 Ways to Improve Your Code Reading Skills</a>от A. N. M. Bazlur Rahman.</em></p>
1 <p><em>Это перевод статьи<a>7 Ways to Improve Your Code Reading Skills</a>от A. N. M. Bazlur Rahman.</em></p>
2 <p>Поскольку всё больше компаний переходит на Agile, уметь читать чужой код становится всё важнее, чем когда-либо в прошлом. Вот несколько советов, как развить соответствующие навыки.</p>
2 <p>Поскольку всё больше компаний переходит на Agile, уметь читать чужой код становится всё важнее, чем когда-либо в прошлом. Вот несколько советов, как развить соответствующие навыки.</p>
3 <p>Чтение чужого кода - в описании должности инженера-разработчика. Однако, это не всегда самая приятная задача. Не каждому нравится читать чей-то код. Иногда это просто скучно, а иногда чужой код просто вызывает желание пойти напиться. Иногда у вас появляются неприятные ощущения от того, что вы не можете его понять или от того, что он просто недостаточно хорошо написан. Большинство разработчиков предпочитает писать код, а не читать, не осознавая того, что чтение - тоже важный навык.</p>
3 <p>Чтение чужого кода - в описании должности инженера-разработчика. Однако, это не всегда самая приятная задача. Не каждому нравится читать чей-то код. Иногда это просто скучно, а иногда чужой код просто вызывает желание пойти напиться. Иногда у вас появляются неприятные ощущения от того, что вы не можете его понять или от того, что он просто недостаточно хорошо написан. Большинство разработчиков предпочитает писать код, а не читать, не осознавая того, что чтение - тоже важный навык.</p>
4 - <p>Чтение исходного кода даёт множество преимущест. И эти преимущества очень выразительные. Код можно сравнить с литературой. Большинство писателей фокусируется на чтении литературных шедевров в процессе работы над чем-то своим. Причина в том, что невозможно создать что-то из вакуума. Нужно впитывать разные штуки из различных источников и работать с ними, создавая свой шедевр. Писать код - очень похожий процесс.</p>
4 + <p>Чтение исходного кода даёт множество преимуществ. И эти преимущества очень выразительные. Код можно сравнить с литературой. Большинство писателей фокусируется на чтении литературных шедевров в процессе работы над чем-то своим. Причина в том, что невозможно создать что-то из вакуума. Нужно впитывать разные штуки из различных источников и работать с ними, создавая свой шедевр. Писать код - очень похожий процесс.</p>
5 <p>Чтобы уметь писать хороший код, нужно читать много хорошего кода. Так вы узнаете, как другие разработчики думают, как решают конкретные задачи и где лажают. Вы можете подцеплять разные идеи, стили, модели работы и постепенно наращивать знания.</p>
5 <p>Чтобы уметь писать хороший код, нужно читать много хорошего кода. Так вы узнаете, как другие разработчики думают, как решают конкретные задачи и где лажают. Вы можете подцеплять разные идеи, стили, модели работы и постепенно наращивать знания.</p>
6 <p>Если сказать проще -<strong>навыки чтения кода совершенствуют навыки написания кода</strong>.</p>
6 <p>Если сказать проще -<strong>навыки чтения кода совершенствуют навыки написания кода</strong>.</p>
7 <blockquote><h3>Читайте также:</h3>
7 <blockquote><h3>Читайте также:</h3>
8 <p>DevOps - что это такое и<a>почему эти практики меняют мир разработки уже сейчас</a></p>
8 <p>DevOps - что это такое и<a>почему эти практики меняют мир разработки уже сейчас</a></p>
9 </blockquote><p>Есть несколько способов улучшить навыки чтения. В этой статье я коснусь только некоторых.</p>
9 </blockquote><p>Есть несколько способов улучшить навыки чтения. В этой статье я коснусь только некоторых.</p>
10 <ol><li><p><strong>Запуск кода</strong>- первый шаг в чтении. В этот момент вы не узнаете продукт во всех деталях, но узнаете, как собрать и запустить код, о библиотеках, которые он использует, фреймворках, от которых он зависит и прочем - это хороший способ разобраться в проекте. Если вы захотите написать свой кусок софта, подобный исследуемому проекту, возможно у вас возникнут идеи о подходящем фреймворке или библиотеках, которые вам стоит использовать.</p>
10 <ol><li><p><strong>Запуск кода</strong>- первый шаг в чтении. В этот момент вы не узнаете продукт во всех деталях, но узнаете, как собрать и запустить код, о библиотеках, которые он использует, фреймворках, от которых он зависит и прочем - это хороший способ разобраться в проекте. Если вы захотите написать свой кусок софта, подобный исследуемому проекту, возможно у вас возникнут идеи о подходящем фреймворке или библиотеках, которые вам стоит использовать.</p>
11 </li>
11 </li>
12 <li><p><strong>Поиск высокоуровневой логики</strong>. Не нужно разбираться в каждой детали, только начиная чтение проекта. Скорее, стоит сфокусироваться на высокоуровневой структуре. Начинайте со входа. Большинство проектов имеют основной метод, с него и начинайте. Кроме того, если это веб-приложение, начните заглядывать в разные пакеты, вроде - где хранится бизнес-логика, код UI, контроллеры и прочее. Пробегитесь по всему проекту и уловите основную идею, а затем спросите себя: на чём вы хотите сосредоточиться и какую часть хотите прочитать первой. Возможно, вы не захотите читать всю базу кода, но вас заинтересовал какой-то фрагмент. Когда вы найдёте нужное место, можете начать с вызова метода и посмотреть, куда вас это приведёт.</p>
12 <li><p><strong>Поиск высокоуровневой логики</strong>. Не нужно разбираться в каждой детали, только начиная чтение проекта. Скорее, стоит сфокусироваться на высокоуровневой структуре. Начинайте со входа. Большинство проектов имеют основной метод, с него и начинайте. Кроме того, если это веб-приложение, начните заглядывать в разные пакеты, вроде - где хранится бизнес-логика, код UI, контроллеры и прочее. Пробегитесь по всему проекту и уловите основную идею, а затем спросите себя: на чём вы хотите сосредоточиться и какую часть хотите прочитать первой. Возможно, вы не захотите читать всю базу кода, но вас заинтересовал какой-то фрагмент. Когда вы найдёте нужное место, можете начать с вызова метода и посмотреть, куда вас это приведёт.</p>
13 </li>
13 </li>
14 <li><p><strong>Используйте и знайте инструменты</strong>. Есть множество инструментов для чтения и изучения исходного кода, которые могут помочь вам визуализировать его. Например, в IntelliJIdea есть навигация по исходному коду, что позволяет искать по словам, частям слов или даже аббревиатуре. Стоит так же изучить шорткаты. Двигаться по исходному коду мышкой иногда достаточно скучно и долго, тогда как шорткаты ускоряют этот процесс. Можно быстро перемещаться из одной части кода в другую.</p>
14 <li><p><strong>Используйте и знайте инструменты</strong>. Есть множество инструментов для чтения и изучения исходного кода, которые могут помочь вам визуализировать его. Например, в IntelliJIdea есть навигация по исходному коду, что позволяет искать по словам, частям слов или даже аббревиатуре. Стоит так же изучить шорткаты. Двигаться по исходному коду мышкой иногда достаточно скучно и долго, тогда как шорткаты ускоряют этот процесс. Можно быстро перемещаться из одной части кода в другую.</p>
15 <p>Ещё одно приложение для чтения кода - Sourcegraph, его написали два Стенфордских выпускника Куин Слак и Бейанг Лиу, которые после многочасового блуждания по чужому плохо задокументированному коду решили создать инструмент, который помог бы им легче читать и понимать код.</p>
15 <p>Ещё одно приложение для чтения кода - Sourcegraph, его написали два Стенфордских выпускника Куин Слак и Бейанг Лиу, которые после многочасового блуждания по чужому плохо задокументированному коду решили создать инструмент, который помог бы им легче читать и понимать код.</p>
16 </li>
16 </li>
17 <li><p><strong>Знайте языки и соглашения</strong>. Глубокое знание конкретного языка помогает вам совершенствовать навыки чтения кода. Каждый язык имеет свой собственный набор соглашений, стилей и синтаксис. Их знание поможет вам быстро получить представление об определённой части кода. Например, в Java названия методов начинаются со строчных букв, а в С# - с заглавных.</p>
17 <li><p><strong>Знайте языки и соглашения</strong>. Глубокое знание конкретного языка помогает вам совершенствовать навыки чтения кода. Каждый язык имеет свой собственный набор соглашений, стилей и синтаксис. Их знание поможет вам быстро получить представление об определённой части кода. Например, в Java названия методов начинаются со строчных букв, а в С# - с заглавных.</p>
18 </li>
18 </li>
19 <li><p><strong>Читайте о практических приёмах и шаблонах проектирования</strong>. Код, который вы читаете или конкретная его конструкция могут казаться туманными, или вы можете быть с ней не знакомы - что естественно. Есть множество практических приёмов (устоявшихся практик) и шаблонов разработки, которые люди используют, чтобы делать всё точнее и оптимальнее. Например, есть шаблон Singleton, в котором конструктор хранится приватно. Вы спросите, какого чёрта кто-то может хранить конструктор приватно, мне он всегда встречался публичным, иначе как я создам экземпляр класса. Есть причина. Шаблон Singleton предотвращает создание более одного экземпляра класса, благодаря чему у него множество практичных пользовательских сценариев. Если вы знаете шаблон, вы не будете биться головой об стену. Знакомство с определёнными шаблонами ("<a>Gang of Four</a>" содержат 23 шаблона разработки) может существенно улучшить навык чтения.</p>
19 <li><p><strong>Читайте о практических приёмах и шаблонах проектирования</strong>. Код, который вы читаете или конкретная его конструкция могут казаться туманными, или вы можете быть с ней не знакомы - что естественно. Есть множество практических приёмов (устоявшихся практик) и шаблонов разработки, которые люди используют, чтобы делать всё точнее и оптимальнее. Например, есть шаблон Singleton, в котором конструктор хранится приватно. Вы спросите, какого чёрта кто-то может хранить конструктор приватно, мне он всегда встречался публичным, иначе как я создам экземпляр класса. Есть причина. Шаблон Singleton предотвращает создание более одного экземпляра класса, благодаря чему у него множество практичных пользовательских сценариев. Если вы знаете шаблон, вы не будете биться головой об стену. Знакомство с определёнными шаблонами ("<a>Gang of Four</a>" содержат 23 шаблона разработки) может существенно улучшить навык чтения.</p>
20 </li>
20 </li>
21 <li><p><strong>Код-ревью</strong>. Разработка софта - деятельность, которая подразумевает совместные усилия. Никто не может создать крупный или значимый программный продукт в одиночку. Каждый из них строился командой. В команде каждый вкладывается в формирование проекта. В результате вклад каждого вливается в весомый кусок работы, который имеет ценность для конечного пользователя. Кроме написания кода есть другой практический приём, который сегодня использует множество команд - делать ревью коду другого человека, высказывая наблюдения, предположения и учась друг у друга. Это сильный инструмент для улучшения знания кодовой базы, налаживания крепких отношений в команде и совершенствования качества кода, что ведёт к уменьшению багов в системе и довольным клиентам.</p>
21 <li><p><strong>Код-ревью</strong>. Разработка софта - деятельность, которая подразумевает совместные усилия. Никто не может создать крупный или значимый программный продукт в одиночку. Каждый из них строился командой. В команде каждый вкладывается в формирование проекта. В результате вклад каждого вливается в весомый кусок работы, который имеет ценность для конечного пользователя. Кроме написания кода есть другой практический приём, который сегодня использует множество команд - делать ревью коду другого человека, высказывая наблюдения, предположения и учась друг у друга. Это сильный инструмент для улучшения знания кодовой базы, налаживания крепких отношений в команде и совершенствования качества кода, что ведёт к уменьшению багов в системе и довольным клиентам.</p>
22 <p>С код-ревью вы вынуждены читать код кого-то из собственной команды, что в итоге помогает совершенствовать навыки вашего чтения.</p>
22 <p>С код-ревью вы вынуждены читать код кого-то из собственной команды, что в итоге помогает совершенствовать навыки вашего чтения.</p>
23 </li>
23 </li>
24 </ol><ol><li><p><strong>Временный рефакторинг</strong>может так же улучшить навык. Вы можете начать с длинного метода, а потом разбить его на несколько частей. Продолжайте, пока не поймёте какие намерения были у более крупного метода. После этого, можете сделать пару заметок о том, что делает метод, а затем откатиться к изменениям.</p>
24 </ol><ol><li><p><strong>Временный рефакторинг</strong>может так же улучшить навык. Вы можете начать с длинного метода, а потом разбить его на несколько частей. Продолжайте, пока не поймёте какие намерения были у более крупного метода. После этого, можете сделать пару заметок о том, что делает метод, а затем откатиться к изменениям.</p>
25 <p>Это поможет вам понять конструкцию метода и улучшить понимание рефакторинга.</p>
25 <p>Это поможет вам понять конструкцию метода и улучшить понимание рефакторинга.</p>
26 </li>
26 </li>
27 </ol><blockquote><h3>Читайте также:</h3>
27 </ol><blockquote><h3>Читайте также:</h3>
28 <p>Что такое webpack externals и<a>как их настроить</a></p>
28 <p>Что такое webpack externals и<a>как их настроить</a></p>
29 </blockquote>
29 </blockquote>