Development

Разметка кода важна!

(В оригинале – Code Layout Matters)

Когда-то очень давно я работал над системой, написанной на Cobol, в которой программисты не могли менять идентацию, если только у них не было причин для реального изменения кода. Такое ограничение было введено потому, что когда-то кто-то чего-то сломал, неправильно изменив идентацию и тем самым внеся строку в одну из специальных колонок вначале. Это правило работало даже в случае неправильной идентации, что иногда случалось. И в результате при чтении кода приходилось быть внимательным, потому что идентации нельзя было доверять.

Исследования показывают, что программисты тратят гораздо больше времени на просмотр кода, чем на собственно программирование, и поэтому оптимизировать надо вещи, связанные именно с просмотром.

  • Простота просмотра. Людям проще всего иметь дело с повторяющимися шаблонами (это еще с тех пор, когда приходилось следить за львами в саванне), и поэтому я могу себе помочь, делая так, чтобы все, что не относится напрямую к предметной области, вся «случайная сложность», вносимая языками программирования, все это отошло на задний план, будучи стандартизировано. Если код работает именно так, как выглядит, тогда моя система восприятия поможет мне найти различия. Именно поэтому я соблюдаю конвенции о том, как располагать различные части в пределах одного модуля: константы, поля, открытые методы, закрытые методы.
  • Выразительная разметка. Всех нас учили, что нужно выделять часть времени на то, чтобы называть переменные правильными именами, чтобы код сам объяснял то, что он делает. Разметка кода – еще одна часть этой выразительности. Первое, что надо сделать – чтобы вся команда согласилась на автоматическое основное форматирование, после чего бы использовала ручное форматирование в процессе написания. Обычно команда быстро приходит к соглашению об общем стиле «доделано вручную». Автоматическое форматирование не может понять моих намерений (я это знаю наверняка, поскольку я его писал однажды), а для меня важно, чтобы разметка отображала именно намерения, а не только синтаксис языка.
  • Компактное форматирование. Чем больше помещается на экране, тем больше я могу видеть без разрыва контекста в виде скроллинга, что означает, что мне нужно меньше кода держать в голове. Длинные комментарии к функциям и множество пробелов были актуальны для восьмисимвольных имен и матричных принтеров, но сейчас есть IDE с поддержкой подсветки синтаксиса и перекрестных ссылок. Пиксели – мой сдерживающий фактор, и я хочу использовать каждый из них для понимания кода. Я хочу чтобы разметка помогала мне понимать код, но не более того.

Один мой друг-непрограммист однажды отметил, что код выглядит как поэзия. Я испытываю подобное чувство, глядя на по-настоящему хороший код, когда каждый символ в тексте имеет свое назначение и отображает стоящий за ним смысл. К сожалению, программирование не имеет такого романтичного ореола, как написание стихов.

Автор оригинала – Steve Freeman