Более 80% времени разработчики тратят на чтение кода. Уметь читать код — даже важнее, чем уметь его писать.
Есть несколько популярных методов понимания кода, которые стоит запомнить. Вот о них и рассказываем в статье.
«Действительно, соотношение времени, затрачиваемого на чтение и написание, составляет более 10 к 1. Мы постоянно читаем старый код в рамках усилий по написанию нового кода. <…> [Поэтому] облегчение чтения облегчает написание».
Роберт К. Мартин
Зачем читать чужой код
Программисты на проекте или продукте меняются, а вот код чаще всего остается одним и тем же. И если изначально его написали плохо, сложно или на свой манер, то остальным разработчикам будет нелегко его понять.
В идеале код должен быть хорошо написан, задокументирован, структурирован и внятно протестирован. Но такие идеальные ситуации случаются редко. А читать его нужно всегда. Уметь читать код — даже важнее, чем уметь его писать.
Писать, читать и тестировать свой и чужой код на ошибки учат на курсе Skypro «Python-разработчик». Программа содержит минимум теории и много практики — так новые навыки усвоятся быстрее. А центр карьеры подготовит к собеседованиям и поможет написать классное резюме, чтобы вы быстрее нашли работу по новой профессии.
Допустим, вы пришли на проект, выполняете задачу. Нужно прочитать код, который написал предыдущий программист, и вы понимаете, что ничего не понимаете: надо проникнуть в ход мыслей предыдущего разработчика, попытаться понять, о чем он думал, когда писал, и вообще — он ли его писал. В общем, это как чтение романа или рассказа: вы читаете не просто инструкции на экране, а историю.
Но давайте разберемся, что нужно делать, чтобы читать чужой код, и каких принципов стоит придерживаться, чтобы понимать его быстро и легко.
С чего начать
Поиск понятной части кода
Найдите понятную часть кода и раскрутите ее. Допустим, перед вами отчет по месячным расходам пользователя.
- Сначала определите, в каком конкретном месте код создает этот файл.
- Потом поймите, в каком месте отчет заполняется.
- Сделайте еще один шаг и выясните, откуда взялась информация о пользователе, и так далее, шаг за шагом следуйте из конца в начало.
Так вы поймете, как организована основная масса кода: где определены функции и переменные, как называются файлы, отвечающие за бизнес-логику. А еще поймете логику программистов, которые писали этот код.
Этот процесс чем-то похож на судоку: сначала вы решаете легкие клеточки, а они приводят к решению сложных и неочевидных.
Git blame и git log
Скорее всего, код, который вы пытаетесь понять, импортировали из общей системы контроля версий — Git, SVN. Посмотрите историю изменения непонятной строчки с помощью команд git blame и git log — они выдадут историю всех коммитов и изменений.
Посмотрите историю файла от начала до конца, узнайте план его развития. Определите, какие функции и методы авторы изменяли больше всего, и сделайте упор на эти фрагменты кода.
Git blame может дать информацию об авторе этого кода — можете расспросить его лично.
Работать в Git и GitHub учат на курсе Skypro «Веб-разработчик». Опытные наставники не просто рассказывают об основных инструментах разработчика, но и помогают студентам освоить их на реальных задачах. Больше половины программы — практика. А результаты выполненных заданий можно положить в портфолио.
Картина целиком
Если есть документация, обязательно ее прочтите. Даже если сначала покажется, что код сложный и непонятный, продолжайте изучать и скоро поймете, что в этих неясных строках есть смысл. Сначала получи́те общее представление, а потом погружайтесь в детали.
Зафиксируйте для себя структуру каталога проекта в целом, пробегитесь по названиям файлов, попытайтесь понять их примерное предназначение.
Чтение спецификации
Если в репозитории, который вы изучаете, есть test suite, то половина дела сделана за вас.
Тесты — отличное место, откуда стоит начинать читать код. Тесты — это намерение разработчика.
Когда будете читать, обратите внимание на ожидаемые результаты и сфокусируйтесь на положительных.
Если кажется, что процесс всё равно непонятен, запустите конкретный тест в дебаге: большая часть тестов не требует запуска всего приложения, поэтому на этот шаг вы потратите меньше времени, чем на полный трейсинг.
Комментарии как подсказки
Оставляйте закладки в тех местах программы, которые показались наиболее интересными и непонятными. Такие пометки поддерживают почти все редакторы кода.
Ставьте точки, делайте пометки и записывайте предположения. Это поможет в процессе отладки и уменьшит количество времени, которое вы могли бы потратить на поиск методов.
Поиск Main
Когда получаете код, который нужно прочитать и понять, первое, что нужно сделать, — запустить его и посмотреть, что он делает: что принимает в качестве входных и каковы выходные данные.
Обратите внимание на подключаемые файлы и стандартные конфигурации, пробегитесь по логам запуска — и общая картина уже в кармане.
Структура и стиль
Обратите внимание на стиль, когда читаете код. Потому что в итоге нужно будет писать его в таком же стиле.
Изучите даже такие вещи, как соглашения об именах, интервалы между строками и расстановку скобок.
Определите общий уровень абстракции. Если это высокоабстрактный код со многими слоями, то вы будете писать такой же.
Если вы достаточно покопаетесь в истории, вы, вероятно, сможете найти точный момент времени, когда один из разработчиков решил абстрагировать часть кода. Поймите, как это выглядело до и как стало выглядеть после, и постарайтесь следовать тому же принципу при написании.
Если столкнулись с решением, которое не нравится, поговорите с командой о том, чтобы изменить его в будущем, но не смешивайте разные стили в одном файле: это сделает код еще менее читабельным.
Чем сильнее файл выглядит так, будто его писал один человек, тем лучше. Быть последовательным важнее: разобраться в одном стиле проще, чем в нескольких.
Мусорная часть кода
Будьте готовы, что найдете мусорную часть кода. Вы можете найти методы, целые файлы или закомментированный код, который никогда не использовался.
Не переживайте и смело удаляйте эти части. Человек, который придет на проект после вас, скажет спасибо.
Повторение и закрепление
Повторите процесс чтения и запуска несколько раз. Это нужно, чтобы начать понимать общую кодовую базу.
Краткие итоги
Читать чужой код сложно только сначала. Пользуйтесь нашими советами — и шаг за шагом вы разберетесь в задаче, над которой работаете.
- Найдите понятную часть кода.
- Посмотрите историю изменений с помощью git blame и git log.
- Прочитайте спецификацию.
- Оставьте себе комментарии, чтобы потом было легче ориентироваться.
- Запустите код и посмотрите, как он работает.
- Определите стиль и продолжайте его придерживаться в дальнейшей работе с кодом.
- Удалите мусорную часть кода.
Добавить комментарий