Как читать чужой код: 6 правил, которые стоит помнить разработчику
Каждому программисту рано или поздно предстоит разобраться в чужом коде, однако не все это делают правильно. Мы перевели статью разработчика Уильяма Шона и узнали, как читать чужой код так, чтобы понимать его и выносить из этой практики что-то новое.
Вы читаете обновленную и улучшенную версию нашей старой статьи
Почему разработчики не любят разбираться в чужом коде
«Ненавижу читать чужой код», — такую фразу можно часто услышать от программистов. Причина их ненависти в том, чужой код пишут не они. Это не значит, что каждый разработчик страдает манией величия, все гораздо проще: читатель никогда не испытает того потокового состояния, в котором находился программист, когда создавал свой код. Поэтому пассивное чтение иногда бывает скучным.
Читатель может не осознавать, что видит на экране труд нескольких разработчиков. Возможно, они спорили во время кодинга, и он дался им нелегко. Возможно, разработчикам потребовались недели, чтобы выдать код, который обходит недокументированные ограничения. Читатель имеет дело с законченным продуктом и даже не догадывается, что стоит за многократно выверенными строками кода.
Рано или поздно у разработчика наступает момент, когда ему предстоит читать чужой код. Например, когда программисту нужно изменить или обновить существующий код, провести код-ревью, разобраться в работе программного интерфейса. Для этого нужно знать, как читать и понимать чужой код. Это умение полезно и тем, кому только предстоит освоиться в кодовой базе. Разберемся, на что обратить внимание при чтении чужого кода, чтобы понять его и, возможно, чему-то научиться.
Как правильно читать код
Научитесь проводить «раскопки» в коде
При первом знакомстве с серьезной кодовой базой вы будете ощущать себя не разработчиком, а археологом, частным сыщиком или исследователем религиозных книг. Вам придется проводить «раскопки» в чужом коде, чтобы понять, как он создавался.
Если вы работаете над кодовой базой, в которой разработчики использовали контроль версий, то у вас есть доступ к метаданным. Изучите следующие команды для Git, чтобы узнать, как изменялся код (они подойдут и для SVN):
git blame
С помощью этой команды вы узнаете имя автора кода, дату последних изменений и хэш коммита (зафиксированного изменения в коде) для каждой строки. Так можно найти историю кода и понять, какой именно код был внесен в репозиторий, как это было сделано и по какой причине. Если это возможно, познакомьтесь с авторами кода: они постараются ответить на ваши вопросы.
Читая код, убедитесь, что вы понимаете, где он начинает выполняться и что происходит в процессе его запуска. Посмотрите, какие файлы подключаются, какие классы используются, какие опции конфига устанавливаются. Скорее всего, вы будете постоянно сталкиваться с ними во всей кодовой базе.
Некоторые модули могут выделяться из остального кода и иметь очень общее назначение. Выполните git blame и посмотрите, какие части основного файла недавно изменяли. Так вы узнаете проблемы, которые решала команда в последнее время. Возможно, разработчики долго пытались наладить библиотеку, которая не слишком хорошо работала. Может, там просто шаблонный код, который нужно регулярно обновлять.
Попробуйте найти примеры таких выделяющихся модулей в других частях кода, чтобы узнать, как и когда они используются. Это поможет вам понять место и роль модулей в основном приложении.
git log и git grep
Используйте команду git log , чтобы увидеть историю коммитов по всему репозиторию. Команда git grep поможет вам найти в коммитах конкретный текст, например, название функции someFunction: git log | grep someFunction -C 3 . Последние флаги покажут вам найденные выражения с тремя строками окружающего контекста.
Также git log может показать вам историю отдельного файла. Чтобы ее посмотреть, используйте флаг -p: git log -p index.js . Обращайте внимание на имена авторов коммитов, чтобы знать, кому в будущем адресовать вопросы.
Переключайтесь между коммитами и изучайте историю кода
Вы можете переключиться на любой коммит и запустить проект так, будто этот коммит был последним. Как правило, это делают для того, чтобы выявить сложно отслеживаемую проблему. Также коммиты переключают, чтобы увидеть историю кода.
Если проект хранится на GitHub или подобном сервисе, вы можете узнать много нового, читая пулл-реквесты и код-ревью. Обращайте внимание на тикеты — карточки-задачи для отслеживания работы над багами, внедрения функций. Читайте обсуждения в тикетах: там могут быть «болевые точки», с которыми вы можете столкнуться в будущем, поэтому лучше иметь представление о них заранее.
Читайте спецификации
Specs или спецификации — это новые комментарии к коду. Читайте unit specs, чтобы выяснить предназначение функций, модулей и возможные пограничные случаи (edge-cases), которые они обрабатывают.
Также читайте интеграционные спецификации, чтобы понять, как пользователи будут взаимодействовать с вашим приложением и какие процессы оно поддерживает.
Воспринимайте комментарии как подсказки
Если в процессе изучения кода вы наткнулись на непонятную функцию и прочли комментарий к ней, который еще больше вас запутал — возможно, он просто устарел. Держите это в голове: если комментарий к функции давно не обновлялся, вероятно, она исчезла уже много месяцев назад, и кроме вас это никто не заметил.
Обращайте внимание на стиль написания кода
Читая чужой код, посмотрите, соблюдены ли стандарты его оформления, есть ли именования, пробелы, скобки. Обратите внимание на общий уровень абстракции кода. Если у него много уровней абстракции, то вам следует их использовать и в своем коде.
Если вы хорошо провели «раскопки», то нашли момент, когда один из разработчиков решил абстрагировать часть кода. Вспомните, как код выглядел до этого изменения и задумайтесь, что с ним стало после выноса на новый уровень абстракции.
Работая над проектом, посмотрите, какие конструкции используют разработчики из вашей команды. Если они отдают предпочтение циклам, а не функции map , то и вам следует их использовать. Если вам не нравится стиль оформления кода в проекте, обсудите это с командой — это лучше, чем смешивать разные стили в одном файле. Хороший код выглядит так, будто он написан одним человеком.
Избавляйтесь от «мусора» в коде
Пока вы читаете код, вам могут встретиться функции и целые файлы, которые разработчики никогда не используют, и комментарии, на которые никто не отвечал несколько лет. Не тратьте на разбор всего этого много времени — избавьтесь от «мусора». Если этот код все еще нужен, кто-нибудь отметит это на код-ревью. Удалив ненужное, вы сбережете силы и время того, кто будет читать этот код после вас.
Итог
Не падайте духом, если чувствуете, что вы совсем запутались в чужом коде. Изучение кода — это не линейный процесс. Не ждите, что сразу поймете все на 100%. Обращайте внимание на важные детали, проводите «раскопки», чтобы найти ответы на вопросы, и, надеемся, все станет понятнее.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях
Хронология просмотра Код Гиас: в какой последовательности правильно смотреть сериалы, фильмы и ОВА


Аниме
Code Geass — культовая аниме-вселенная, по которой за долгие 13 лет ее существования вышло очень много фильмов, полнометражек и спин оффов. Если вы только сейчас открываете для себя историю Лелуша \ Зеро и его последователей, важно начать смотреть Код Гиас в правильном порядке.
Мы внимательно изучили все, что выходило по теме и составили “карту просмотра”, которая поможет максимально погрузиться во вселенную и узнать обо всех событиях так, как и было задумано создателями.
Оригинальный сериал
Первая часть “Code Geass — Lelouch of the Rebellion” (Восставший Лелуш) вышла в 2006 году. В ней мы впервые познакомились с альтернативной вселенной начала 21 века, в которой мир поделен между могущественными империями, а многострадальная Япония захвачена одной из них. Причем не Россией, как можно было бы предположить, а Великой Британией.
Таким образом, Страна Восходящего солнца превратилась из суверенного государства в колонию Британской империи и теперь носит название “Район 11”.
Довольны таким положением дел далеко не все и готовится восстание, в которое оказывается втянут студент местной элитной академии, Лелуш. Знакомство с таинственной девушкой С.С. (Сицу) дает молодому человеку уникальную способность управлять поступками других людей. Теперь он намеревается отомстить Британии и возвратить Японии ее былую славу.

Второй сезон ”Code Geass — Lelouch of the Rebellion R2” 2008 года — прямое продолжение событий первого.
Это монолитная история, которую лучше смотреть друг за другом.
Полнометражные OVA-шки 2008 и 2009 годов
На волне популярности оригинального сериала вышло два полнометражных фильма:
- “Код Гиас: Темное восстание” (2008). Краткий пересказ событий первого сезона. 25 серий попытались уместить в 117 минут. деталей гораздо меньше, но основные сюжетные повороты показаны. Смотреть не рекомендуется, так как оригинальный сезон лучше во всем, нового контента нет от слова совсем.
- “Реквием Зеро”. Аналогичный пересказ 25 серий 2 сезона за 116 минут. События показаны более скомкано. Слегка изменены диалоги в концовке, но не настолько чтобы это было обязательно к просмотру. Можете смело пропустить.
Отступник Акито

Продолжается война между Британией и Европейским союзом. Под Санкт-Петербургом идут упорные бои. Овы рассказывают о событиях на европейском фронте. Хронологически действие происходит между первым и вторым сезонами оригинального сериала.
Главные герои и сюжет — абсолютно самостоятельны, и от его незнания вы мало что потеряете.
Это спин офф (то есть ответвление от оригинальной истории) из 5 овашек которые выходили с 2012 по 2016 годы. Правильный порядок просмотра этого “Код Гиас” следующий:
- Код гиас: Отступник Акито: Падение Виверны (2012).
- Разрыв Виверны (2013).
- Яркое падение (2015).
- Храня ненависть (2015).
- Быть любимым (2016).

“Code Geass: Отступник Акито” был принят публикой гораздо хуже, чем оригинальный сериал 2006-2008 гг. Хотя, по сюжету вам встретится потерявший память Лелуш и Сицу, влияние их на события спин оффа крайне мало.
- Красивая музыка.
- Гораздо более динамичные и интересные боевые сцены.
- По сравнению с оригиналом очень слабый сюжет.
- Гораздо менее харизматичные персонажи.
- Добавление 3Д хоть и добавило батальным сценам динамики, отпугнуло некоторых зрителей.
Если и смотреть, то только после оригинальных двух сезонов.
Спешлы
Вместе с DVD изданием было также выпущено несколько специальных эпизодов с персонажами спин оффа. Это фансервисные истории, не оказывающие влияния на сюжет. Особой популярности они не получили.
Стоит смотреть только если очень сильно понравились герои “Отступника Акито”.
Второй перезапуск

В 2017 году вышел еще один рекап легендарного сериала, на этот раз более интересный. В нем есть новые сцены, но хватает и проблем. Всего на текущий момент выпущено 4 фильма. Хронология просмотра этого рекапа Код Гиас следующая:

- Код Гиас: Восставший Лелуш (2017). Пробуждение. Есть новые сцены, но их мало.
- Восстание (2017). Новых сцен чуть больше. Несколько важных сюжетных арок, которые были в сериале 2006-2008 годов, — вырезаны. Из-за небольшого хронометража, часть персонажей не раскрыта. Подробный разбор изменений по сравнению с сериалом можно посмотреть в разделе «Видео по теме».
- Император (2018). Новых сцен очень много.
- Воскресший (2019). Изначально позиционировалось что это будет полноценный третий сезон, органично продолжающий события первых двух. На деле, это, скорее, альтернативное развитие событий, в котором некоторые герои воскресли, а некоторые вообще не умирали.
Смотреть данный рекап стоит обязательно, но только после оригинального сериала и как дополнение к нему. Иначе рискуете не понять многих моментов и не почувствуете накала многих сцен.
Спешлы
Вместе с каждым фильмом на DVD выходило по 1 спецвыпуску. Несмотря на то, что со дня выхода прошло уже много времени найти к ним субтитры или перевод будет затруднительно.
В целом, важной смысловой нагрузки они не несут, хотя в спешле “Запах моря” чуть больше можно почерпнуть о том, что стало с героями после событий фильма.

Добавка для фанатов
В этом разделе мы собрали все, что никак не повлияет на сюжет, но может быть интересно тем, кто проникся персонажами и вселенной “Код Гиасс” и хотел бы подольше побыть с любимыми героями.
Чудо в день рождения

Начать можно со специального эпизода “Чудо в день рождения” (Kiseki no Birthday) 2010 года. События в нем разворачиваются в школе Эшфорд, где учился Лелуш. Полным ходом идет подготовка к фестивалю, когда на академию нападет группа террористов и пытаются ее захватить.
Не стоит ждать много, так как это не полноценная серия, а динамично меняющиеся статичные картинки, хотя и с оригинальным сюжетом. Несмотря на технические огрехи история получилась качественной, а ее финал даже способен вызвать у тру-фаната скупую слезу.
Нанналли в Стране чудес

«Нанналли в Стране чудес» \ «Nunnally in Wonderland» вышла в 2012 году. Младшая сестра Лелуша, Нанналли, очень любит Льюиса Кэрролла и его книгу «Алиса в стране чудес». Как любимый старший брат, Лелуш решает исполнить мечту сестры, и они оказываются в этой сказке.
Если оригинальный сериал во многих эпизодах серьезен и даже трагичен, то это ОВА, напротив, легка и весела. Хороши шутки и полюбившиеся герои с их уникальными фишечками. Ничего нового овашка не привносит, но настроение поднимает.
Входит в топ 7 лучших ОВА 2012 года на одном из сайтом агрегаторов. Советуем посмотреть.
Новая часть
На текущий момент вышел анонс новой части Код Гиаса с подзаголовком “Вернувшийся Зет”. Пока никаких подробностей о ней не известно.
Видео по теме
Отличия фильма Лелуш Восстание (2017) и сериала 2006-2008 гг.
Обзор “Отступник Акито”
Обзор “Воскресшего Лелуша”
Как правильно смотреть исходный код open source проектов?
К примеру хочется посмотреть как написана или как работает под капотом та или иная open source библиотека или фреймворк, к примеру возьмем react, заходишь на github и находишь react, а что дальше? Ведь в репозитории куча файлов, куча папок, как понять куда заходить, в какую папку, в какой файл итд?
- Вопрос задан более двух лет назад
- 417 просмотров
1 комментарий
Простой 1 комментарий

Решения вопроса 1
Структура кода может отличаться от проекта к проекту.
В общем случае есть папка src или lib, содержащая код приложения/библиотеки и всякие побочные ресурсы в остальных файлах (README, изображения, конфиги и т.п.). Очень часто в файле README.md описывается процесс сборки проекта — какие команды выполнить и т.п. — или есть ссылка на подобный документ, например, CONTRIBUTING.md. Иногда объясняется структура директорий и какие в них модули. Нужно оттуда отталкиваться. я думаю.
Ответ написан более двух лет назад
Комментировать
Нравится 3 Комментировать
Ответы на вопрос 1
Сергей Горностаев @sergey-gornostaev
Седой и строгий
Надо просто знать язык и инструментальные средства. Если понимаешь, как библиотеки в твоём языке работают и пишутся, то сразу очевидно куда заходить и что смотреть.
Ответ написан более двух лет назад
Комментировать
Нравится 3 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- IT-образование
Плохой ли у меня метод обучения и почему стало скучно учится?
- 1 подписчик
- вчера
- 152 просмотра
Спроси Киноафишу
Серию фильмов, снятых по романам Дэна Брауна с Томом Хэнксом в главной роли, нужно смотреть в следующем порядке:
Код Да Винчи, 2006
Ангелы и Демоны, 2009
Код да Винчи
Ангелы и демоны
Похожие вопросы
Комментарии Обсудить в чате
Оставлять комментарии могут только зарегистрированные пользователи Войти как пользователь
Авторизовываясь, вы соглашаетесь с правилами пользования сайта
Авторизация по e-mail
Сейчас обсуждают
Почему фильм «Девчата» не сделают цветным? 3 комментария
Какие советские фильмы были раскрашены? 3 комментария
Где снимали сериал «Лесник»? 1 комментарий
Related video
Секрет красоты самой желанной актрисы России до смешного прост: нужно соблюдать всего 3 правила
Становится копией Пугачевой: слишком честное фото Анны Михалковой оказалось в Сети
Даже ДНК-тест не нужен: как выглядит внебрачный сын Пореченкова, который снимается в кино
Из-за Бузовой на всех каналах ввели одно правило: одна часть ее тела оказалась под запретом
Общаются ради выгоды: у Семчева есть внебрачный сын, которого он бросил до рождения (фото)
Этот запрет касается фильма «Вий» и насмешит современных детей: сейчас такое представить трудно
Эту потрясающую сцену вырезали из «Семнадцати мгновений весны»: в ней Штирлиц встретил своего сына
Главный сериал 2023 года уже хотят запретить: что не так со «Словом пацана»
Стала шедевром: многие не знали, но название этой карточной игры англичане украли у русских
Советский Челентано: в его постели побывали все актрисы, за исключением Муравьевой
Модники хохочут, увидев таких женщин: вот как не стоит заправлять футболки
Фраза из финала «Титаника», которую все поняли неправильно: вот о чем говорила Роуз в воде
