23 Ноя 2022
5 мин
53

Как научиться читать и понимать код программирования

Рассказываем, зачем читать чужой код и с чего стоит начать.

Зачем понимать чужой код

Содержание

Более 80% времени разработчики тратят на чтение кода. Уметь читать код — даже важнее, чем уметь его писать.

Есть несколько популярных методов понимания кода, которые стоит запомнить. Вот о них и рассказываем в статье.

«Действительно, соотношение времени, затрачиваемого на чтение и написание, составляет более 10 к 1. Мы постоянно читаем старый код в рамках усилий по написанию нового кода. <…> [Поэтому] облегчение чтения облегчает написание».

Роберт К. Мартин

Зачем читать чужой код

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

В идеале код должен быть хорошо написан, задокументирован, структурирован и внятно протестирован. Но такие идеальные ситуации случаются редко. А читать его нужно всегда. Уметь читать код — даже важнее, чем уметь его писать.

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

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

С чего начать

Поиск понятной части кода

Найдите понятную часть кода и раскрутите ее. Допустим, перед вами отчет по месячным расходам пользователя.

  1. Сначала определите, в каком конкретном месте код создает этот файл.
  2. Потом поймите, в каком месте отчет заполняется.
  3. Сделайте еще один шаг и выясните, откуда взялась информация о пользователе, и так далее, шаг за шагом следуйте из конца в начало.

Так вы поймете, как организована основная масса кода: где определены функции и переменные, как называются файлы, отвечающие за бизнес-логику. А еще поймете логику программистов, которые писали этот код.

Этот процесс чем-то похож на судоку: сначала вы решаете легкие клеточки, а они приводят к решению сложных и неочевидных.

Git blame и git log

Скорее всего, код, который вы пытаетесь понять, импортировали из общей системы контроля версий — Git, SVN. Посмотрите историю изменения непонятной строчки с помощью команд git blame и git log — они выдадут историю всех коммитов и изменений.

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

Git blame может дать информацию об авторе этого кода — можете расспросить его лично.

Поиск понятной части кода

Картина целиком

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

Зафиксируйте для себя структуру каталога проекта в целом, пробегитесь по названиям файлов, попытайтесь понять их примерное предназначение.

Чтение спецификации

Если в репозитории, который вы изучаете, есть test suite, то половина дела сделана за вас.

Тесты — отличное место, откуда стоит начинать читать код. Тесты — это намерение разработчика.

Когда будете читать, обратите внимание на ожидаемые результаты и сфокусируйтесь на положительных.

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

Комментарии как подсказки

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

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

Поиск Main

Когда получаете код, который нужно прочитать и понять, первое, что нужно сделать, — запустить его и посмотреть, что он делает: что принимает в качестве входных и каковы выходные данные.

Обратите внимание на подключаемые файлы и стандартные конфигурации, пробегитесь по логам запуска — и общая картина уже в кармане.

Структура и стиль

Обратите внимание на стиль, когда читаете код. Потому что в итоге нужно будет писать его в таком же стиле.

Изучите даже такие вещи, как соглашения об именах, интервалы между строками и расстановку скобок.

Определите общий уровень абстракции. Если это высокоабстрактный код со многими слоями, то вы будете писать такой же.

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

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

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

Мусорная часть кода

Будьте готовы, что найдете мусорную часть кода. Вы можете найти методы, целые файлы или закомментированный код, который никогда не использовался.

Не переживайте и смело удаляйте эти части. Человек, который придет на проект после вас, скажет спасибо.

Повторение и закрепление

Повторите процесс чтения и запуска несколько раз. Это нужно, чтобы начать понимать общую кодовую базу.

Краткие итоги

Читать чужой код сложно только сначала. Пользуйтесь нашими советами — и шаг за шагом вы разберетесь в задаче, над которой работаете.

  1. Найдите понятную часть кода.
  2. Посмотрите историю изменений с помощью git blame и git log.
  3. Прочитайте спецификацию.
  4. Оставьте себе комментарии, чтобы потом было легче ориентироваться.
  5. Запустите код и посмотрите, как он работает.
  6. Определите стиль и продолжайте его придерживаться в дальнейшей работе с кодом.
  7. Удалите мусорную часть кода.

Получите пошаговый план развития в карьере после записи на курс






    Оставляя заявку, вы принимаете условия соглашения

    Учёба ради учёбы — это не прикольно. На наших курсах вы ставите конкретные цели и достигаете
    их
    в заданные сроки. Начинайте карьеру с первых достижений!

    Добавить комментарий

    Вставить формулу как
    Блок
    Строка
    Дополнительные настройки
    Цвет формулы
    Цвет текста
    #333333
    Используйте LaTeX для набора формулы
    Предпросмотр
    \({}\)
    Формула не набрана
    Вставить