Основные возможности платформы Hexlet не доступны в вашем браузере. Пожалуйста, обновитесь.
,

Развитие7 способов усовершенствовать навыки чтения кода

Это перевод статьи 7 Ways to Improve Your Code Reading Skills от A. N. M. Bazlur Rahman.

Поскольку всё больше компаний переходит на Agile, уметь читать чужой код становится всё важнее, чем когда-либо в прошлом. Вот несколько советов, как развить соответствующие навыки.

Чтение чужого кода — в описании должности инженера-разработчика. Однако, это не всегда самая приятная задача. Не каждому нравится читать чей-то код. Иногда это просто скучно, а иногда чужой код просто вызывает желание пойти напиться. Иногда у вас появляются неприятные ощущения от того, что вы не можете его понять или от того, что он просто недостаточно хорошо написан. Большинство разработчиков предпочитает писать код, а не читать, не осознавая того, что чтение — тоже важный навык.

Чтение исходного кода даёт множество преимуществ. И эти преимущества очень выразительные. Код можно сравнить с литературой. Большинство писателей фокусируется на чтении литературных шедевров в процессе работы над чем-то своим. Причина в том, что невозможно создать что-то из вакуума. Нужно впитывать разные штуки из различных источников и работать с ними, создавая свой шедевр. Писать код — очень похожий процесс.

Чтобы уметь писать хороший код, нужно читать много хорошего кода. Так вы узнаете, как другие разработчики думают, как решают конкретные задачи и где лажают. Вы можете подцеплять разные идеи, стили, модели работы и постепенно наращивать знания.

Если сказать проще — навыки чтения кода совершенствуют навыки написания кода.

Есть несколько способов улучшить навыки чтения. В этой статье я коснусь только некоторых.

  1. Запуск кода — первый шаг в чтении. В этот момент вы не узнаете продукт во всех деталях, но узнаете, как собрать и запустить код, о библиотеках, которые он использует, фреймворках, от которых он зависит и прочем — это хороший способ разобраться в проекте. Если вы захотите написать свой кусок софта, подобный исследуемому проекту, возможно у вас возникнут идеи о подходящем фреймворке или библиотеках, которые вам стоит использовать.

  2. Поиск высокоуровневой логики. Не нужно разбираться в каждой детали, только начиная чтение проекта. Скорее, стоит сфокусироваться на высокоуровневой структуре. Начинайте со входа. Большинство проектов имеют основной метод, с него и начинайте. Кроме того, если это веб-приложение, начните заглядывать в разные пакеты, вроде — где хранится бизнес-логика, код UI, контроллеры и прочее. Пробегитесь по всему проекту и уловите основную идею, а затем спросите себя: на чём вы хотите сосредоточиться и какую часть хотите прочитать первой. Возможно, вы не захотите читать всю базу кода, но вас заинтересовал какой-то фрагмент. Когда вы найдёте нужное место, можете начать с вызова метода и посмотреть, куда вас это приведёт.

  3. Используйте и знайте инструменты. Есть множество инструментов для чтения и изучения исходного кода, которые могут помочь вам визуализировать его. Например, в IntelliJIdea есть навигация по исходному коду, что позволяет искать по словам, частям слов или даже аббревиатуре. Стоит так же изучить шорткаты. Двигаться по исходному коду мышкой иногда достаточно скучно и долго, тогда как шорткаты ускоряют этот процесс. Можно быстро перемещаться из одной части кода в другую.

    Ещё одно приложение для чтения кода — Sourcegraph, его написали два Стенфордских выпускника Куин Слак и Бейанг Лиу, которые после многочасового блуждания по чужому плохо задокументированному коду решили создать инструмент, который помог бы им легче читать и понимать код.

  4. Знайте языки и соглашения. Глубокое знание конкретного языка помогает вам совершенствовать навыки чтения кода. Каждый язык имеет свой собственный набор соглашений, стилей и синтаксис. Их знание поможет вам быстро получить представление об определённой части кода. Например, в Java названия методов начинаются со строчных букв, а в С# — с заглавных.

  5. Читайте о практических приёмах и шаблонах проектирования. Код, который вы читаете или конкретная его конструкция могут казаться туманными, или вы можете быть с ней не знакомы — что естественно. Есть множество практических приёмов (устоявшихся практик) и шаблонов разработки, которые люди используют, чтобы делать всё точнее и оптимальнее. Например, есть шаблон Singleton, в котором конструктор хранится приватно. Вы спросите, какого чёрта кто-то может хранить конструктор приватно, мне он всегда встречался публичным, иначе как я создам экземпляр класса. Есть причина. Шаблон Singleton предотвращает создание более одного экземпляра класса, благодаря чему у него множество практичных пользовательских сценариев. Если вы знаете шаблон, вы не будете биться головой об стену. Знакомство с определёнными шаблонами ("Gang of Four" содержат 23 шаблона разработки) может существенно улучшить навык чтения.

  6. Код-ревью. Разработка софта — деятельность, которая подразумевает совместные усилия. Никто не может создать крупный или значимый программный продукт в одиночку. Каждый из них строился командой. В команде каждый вкладывается в формирование проекта. В результате вклад каждого вливается в весомый кусок работы, который имеет ценность для конечного пользователя. Кроме написания кода есть другой практический приём, который сегодня использует множество команд — делать ревью коду другого человека, высказывая наблюдения, предположения и учась друг у друга. Это сильный инструмент для улучшения знания кодовой базы, налаживания крепких отношений в команде и совершенствования качества кода, что ведёт к уменьшению багов в системе и довольным клиентам.

    С код-ревью вы вынуждены читать код кого-то из собственной команды, что в итоге помогает совершенствовать навыки вашего чтения.

  7. Временный рефакторинг может так же улучшить навык. Вы можете начать с длинного метода, а потом разбить его на несколько частей. Продолжайте, пока не поймёте какие намерения были у более крупного метода. После этого, можете сделать пару заметок о том, что делает метод, а затем откатиться к изменениям.

    Это поможет вам понять конструкцию метода и улучшить понимание рефакторинга.

Поделиться Вконтакте
Отправить в Телеграм
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP и Java. Хекслет

Подробнее о том, почему наше обучение работает →