Перевод статьи «How to quickly and effectively read other people’s code».
Недавно мой приятель, программист-самоучка, задал мне вопрос:
«Как тебе удается разбираться в чужом коде? Я начинаю осваиваться в собственном, но каждый раз, пытаясь заглянуть в чужой, я теряюсь. Я знаю, что иногда это неизбежно, особенно если код плохо документирован (или вообще не имеет документации), но у меня вообще нет никакой стратегии на этот случай. Буду благодарен за любые советы!»
Мне нравится этот вопрос по двум причинам:
- Метод чтения чужого кода, который я рекомендую, также поможет вам начать лучше понимать собственный код. Кроме того, вы будете быстрее и легче разбираться во всех новых частях кода, с которым работаете.
- Этот вопрос позволяет затронуть один из наиболее важных аспектов освоения программирования: пользу большого количества высококачественных примеров.
В общем, вопрос хороший. Давайте начнем с начала.
Лучший подход к чтению и пониманию чужого кода
1. Найдите одну вещь, которую, как вы знаете, этот код делает, и отследите все действия в обратном порядке, начиная с конца.
Возьмем пример. Вы знаете, что код, который вы просматриваете, в конечном итоге создает файл со списком названий фильмов. Определите, где в коде те несколько строк, которые, собственно, генерируют этот файл.
Затем сделайте шаг назад и определите, как код помещает информацию в файл.
После этого сделайте еще шаг назад и найдите, откуда берется эта информация.
И так далее.
Назовем все эти связанные кусочки «цепочкой действий».
Используя этот метод, вы неизбежно ознакомитесь с разными частями кода. Это, вполне вероятно, позволит вам хорошо разобраться в следующих вещах:
- как организовано тело кода (где определены переменные, где расположены разные типы функций и т. д.),
- стиле написания кода, которого придерживался автор,
- образе мышления автора кода и его подходе к решению проблем (это сложнее, но по мере накопления опыта подобные вещи начинаешь понимать интуитивно).
В процессе продвижения от конца кода к его началу вы будете постепенно наращивать понимание кода в целом. Таким образом, вы стартуете от
[большой файл с кодом, смысл которого вам не понятен]
и постепенно приходите к
[по-прежнему большой файл с кодом, но несколько его разделов вы уже понимаете].
Это как если бы вы стояли в совершенно темной комнате, где один за другим включались бы огни, постепенно открывая вам все больше деталей интерьера.
2. Повторяйте пункт 1.
Повторите весь процесс несколько раз, и вы быстро улучшите свое понимание все большего количества частей этой кодовой базы.
Как постепенно освещаются разные части темной комнаты, так и разные части кода постепенно открываются вам (по мере того, как вы разбираетесь все с новыми и новыми функциями).
Работа этого метода основана на том, что тело кода всегда создается для решения какой-то одной (или не одной) сложной задачи. Так что «цепочка действий» для прохождения вам обеспечена.
А чем лучше вы поймете, как связаны между собой разные части кодовой базы, тем лучше вы будете понимать эту кодовую базу в целом.
Чем больше примеров (хорошего) кода вы изучите, тем легче вам будет даваться чтение и понимание кода вообще, тем быстрее вы сможете это делать.
И это подводит нас ко второй причине, почему мне понравился вопрос моего приятеля. Он позволяет отметить важность изучения большого количества высококачественных примеров кода, написанных другими людьми.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
Статья ради статьи.
Коммент ради коммента
Куштии