вторник, 14 сентября 2010 г.

13/97: Разметка кода имеет значение

Это перевод Code Layout Matters. Автор: Steve Freeman.

Из "97-ми вещей, которые должен знать каждый программист".

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

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

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.