Найти тему
Александр Крафтмург

Почему сложно читать чужой код

Оглавление

Eсть одна замечательная фраза в книге Харольда Абельсона (Harold Abelson), Джеральда Джея Сассмана (Gerald Jay Sussman) и Джулии Сассман (Julie Sussman) «Структура и интерпретация компьютерных программ» - «Программы должны писаться для того, чтобы их читали люди, и лишь во вторую очередь для выполнения машиной»

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

✅ Подписывайся на канал, чтобы не пропустить новые публикации!

Совместная работа когнитивных процессов

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

Ваш мозг работает подобно компьютеру. Сначала ему нужно загрузить информацию в оперативную память - это кратковременная память. Далее ему нужно обработать полученную информацию подобно процессору - это рабочая память. Когда процессору (рабочей памяти) удалось обработать или запомнить информацию, то он ее сохраняет на жесткий диск - в долговременную память.

Кратковременная память

Ваша кратковременная память используется для хранения поступающей информации в течение непродолжительного времени. Например, при чтении программы все ключевые слова, имена переменных хранятся в кратковременной памяти. Или когда вам диктуют адрес почтового отделения во время разговора, то эта информация не сразу откладывается у вас в долговременной памяти. Емкость кратковременной памяти ограниченна. Она может составляет примерно от 6 до 12 объектов. Это могут быть буквы, цифры, геометрические фигуры и так далее.

Долговременная память

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

Рабочая память

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

Почему читать незнакомый код так сложно

Ключевую роль при чтении программы играет долговременная память. Как бы вы ни старались, вы не сможете сохранить всю информацию из кода в кратковременной памяти. Информация в кратковременной памяти хранится примерно 30 секунд. Поэтому после прочтения определенного фрагмента кода рабочая память сначала ищет похожую информацию в долговременной памяти. Если она там оказалась, то вы моментально вспоминаете ее, кратковременная память очищается и вы продолжаете чтение дальше, процесс повторяется. Если информация в долговременной памяти не нашлась, то тогда рабочей памяти необходимо понять/запомнить/перенести информацию из кратковременной в долговременную память.

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

Как научится быстро читать код

Как банально это бы не прозвучало, но чтобы лучше разбираться в чужом коде, его нужно больше читать 😀 Но простого чтения недостаточно. Нужно активно анализировать и размышлять над кодом. Это можно сравнить с чтением книги, когда вы не просто просматриваете строки, но и пытаетесь понять мотивы персонажей, стиль автора и основную идею произведения. При чтении кода старайтесь задавать себе вопросы: "Почему автор решил именно так реализовать эту функцию?", "Какие есть альтернативные способы решения этой задачи?", "Какие могут быть последствия этого решения в долгосрочной перспективе?".

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

Также стоит практиковать парное программирование, где вы и ваш коллега чередуетесь в ролях водителя и навигатора. Навигатор объясняет водителю, что делать, и почему это важно, что способствует более глубокому пониманию кода обоими участниками.

🤔 А как ты прокачиваешься в скорочтении кода?

👇 Напиши в комментариях.

✅ Подписывайся на канал, чтобы не пропустить новые публикации!