Распечатайте свой код. На бумаге.
Фото на обложке CC-BY-SA 4.0, Corvair
Чтение кода — тяжелая работа, в некотором роде тяжелее, чем его написание, поэтому большинство из нас склонны избегать пристального изучения. Существует практика, о которой я узнал давно, называемая настольной проверкой, которая, кажется, вышла из моды в мире невероятно сложных IDE, но я считаю, что она по-прежнему имеет большую ценность.
Чтобы проверить свой код:
- Распечатай
- Найдите тихую комнату
- Принесите карандаш
- Оставьте все устройства позади. Снимите смарт-часы. Сложите ноутбук. Оставьте свой телефон на рабочем столе. Это между вами и кодом.
- Сядьте и читайте свой код построчно. Отметьте это, как вы идете.
Вы будете чему-то учиться каждый раз, когда делаете это.
Вот несколько вопросов, которые вы можете задать:
- Этикетки правильные? В английском гораздо больше нюансов, чем, скажем, в Python, поэтому из этого следует, что многие дефекты в коде возникают из-за непонимания английского между программистами, а не из-за непонимания Python. С другой стороны, код — это возможность согласовать наши ментальные модели и словарный запас предметной области с нашими товарищами по команде. Это может стать очень философским.
- Верны ли абстракции? Что мы знаем о проблемной области сейчас, что было не так ясно, когда писался этот код? Учитывая то, что мы знаем сейчас, как мы можем приблизить этот код к нашему нынешнему пониманию?
- Какие простые рефакторинги могли бы сделать код более ясным и элегантным? Что больше не нужно, что мы предполагали раньше? Что можно разложить дальше?
Вы также найдете ошибки, естественно. Когда вы замедлитесь и посмотрите, ошибки начнут ползти прямо со страницы. Иногда от них у вас перехватывает дыхание, и вы задаетесь вопросом, как эта чертова штука вообще работала.
Как распечатать код с подсветкой синтаксиса:
Для этого существует древняя, но полезная утилита командной строки, называемая enscript.
В MacOS вам нужно brew install enscript
первый.
В Linux он у вас уже может быть. Если нет, ищите пакет enscript
или скачать здесь.
Чтобы распечатать код, запустите:
enscript -1rG --line-numbers -p out.ps --highlight=python \
-c inputfile.py
Выходной файл будет выглядеть примерно так:
Затем вы можете либо открыть файл out.ps (в MacOS, чтобы открыть его в средстве просмотра PostScript по умолчанию), либо распечатать его на принтере по умолчанию с помощью команды lpr out.ps.
Enscript имеет много вариантов. Вот самые ценные варианты:
-1 -2 -3 -4
количество столбцов на странице-r
повернуть (ландшафтный режим)-G
причудливый заголовок (с именем файла, датой и временем)--color=1
если у вас есть цветной принтер-w html
если вы хотите вывести HTML вместо PostScript--help-highlight
покажет, для каких языков доступна подсветка синтаксиса
Вот красивая версия, которая добавляет --color=1
а также -2
. Если длина вашей линии не выходит из-под контроля, это хорошая отправная точка.
enscript -2rG --line-numbers -p out.ps --highlight=python \
--color=1 -c inputfile.py
Код может быть довольно красивым в состоянии покоя — если вы потратите время, чтобы по-настоящему оценить его.
У вас есть инструменты, теперь отложите время.