Простая и мощная структура для устранения запутанного кода.

Все хотят писать чистый код. Об этом есть целые книги!

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

Ключ вот в чем:

Каждая строка делает только одну вещь

Одна линия, одна задача.

Но не сходи с ума.

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

Но компактный код может быть загадочным. (Вы когда-нибудь видели APL?) И то, что вы можете разделить строку, не означает, что вы должны это делать.

В некоторых языках вы можете присвоить два значения двум переменным в одной строке:

Вы можете поместить оба задания в отдельную строку:

Но да ладно. Вам это действительно нужно? Как узнать, следует ли разделить строку?

Дело не только в длине строки

Фелиен Херманс открывает свою книгу Мозг программиста неопровержимой истиной: Путаница — это часть программирования.

Книга Германса (которую я очень рекомендую) объясняет, как три функции памяти вашего мозга работают вместе, чтобы понять код:

  • Долговременная память (LTM): хранит информацию для долгосрочного поиска, такую ​​как ключевые слова, синтаксис и часто используемые идиомы и шаблоны.
  • Кратковременная память (STM): хранит новую информацию для краткосрочного извлечения (менее 30 секунд!), такую ​​как имена переменных и специальные значения.
  • Рабочая память (WM): обрабатывает информацию из LTM и STM, чтобы сделать выводы и получить новые знания.

STM и WM маленькие. Оба могут хранить только от 4 до 6 вещей одновременно! Перегрузите их, и вы получите рецепт путаницы.

Это дает нам правило для определения того, является ли строка кода слишком сложной:

Строка кода, содержащая более 6 частей информации, должна быть упрощена.

Я называю это «правилом шести».

Вот пример на Python:

Вам тяжело это читать? Я тоже. На то есть веская причина.

Вы должны знать, что такое map, lambda и .split(). Переменные x и s, строки '=', '?' и '&', индекс [1] и срез [-3:] занимают место в STM и WM.

Всего десять вещей! Твой мозг не успевает.

Или, может быть, ваш может.

Если это так, у вас есть хороший опыт за плечами.

Ваш мозг «разбивает» синтаксис вроде s.split('?')[1] на «часть строки справа от вопросительного знака». И вы можете реконструировать код, используя информацию, хранящуюся в вашем LTM. Но вы по-прежнему обрабатываете только несколько фрагментов за раз.

Итак… мы можем определить, когда строка кода слишком сложна. Что теперь?

Если код сбивает с толку, сломайте его

Разбейте его на более мелкие части, то есть!

Есть две стратегии, которые я использую для разбивки кода. Я называю их SIMPLE и MORF.

Стратегия SIMPLE добавляет строки кода для снижения когнитивной нагрузки.

Давайте применим SIMPLE к этой неприятной строчке, которую мы видели ранее. Удалите второй аргумент из map() и поместите его в отдельную строку:

Это все еще может быть трудно читать. В первой строке нужно отслеживать семь вещей:

  • query_params
  • s
  • .split()
  • '?'
  • [1]
  • '&'
  • [-3:]

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

Снова примените SIMPLE и переместите s.split('?')[1] на новую строку:

Сравните это с оригинальным однострочником. Какой из них легче обрабатывать?

Стратегия MORF использует другой подход и группирует код в функции.

Вот как выглядит MORF применительно к нашему однострочнику:

Вы даже можете комбинировать MORF и SIMPLE:

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

Есть и бонусная выгода!

Как только вы узнаете, что ваши WM и STM не перегружены, вы поймете, что любая оставшаяся путаница связана с отсутствием информации в вашем LTM.

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

Хотите узнать больше о том, как работает ваш мозг во время программирования?

Посмотрите Мозг программиста Фелиенн Херман.

Упражнение

Посмотрите на код, который мы получили с помощью SIMPLE:

Одна строка по-прежнему содержит более шести «идей» и должна быть разделена по правилу шести:

  • Какая линия?
  • Что такое «идеи»?
  • Как бы вы его разделили?
  • Разделение сильно изменило ситуацию?

Оставьте комментарий с вашим ответом!

Want to Connect?
Become a better coder in 5 minutes.
One email, every Saturday, with one actionable tip.
Always less than five minutes of your time.
Subscribe here