Введение

Форматирование для облегчения чтения кода или разметки. Красивое форматирование (или prettyprinting) — это применение различных стилистических правил форматирования к текстовым файлам, таким как исходный код, разметка и аналогичный контент. Эти правила могут включать соблюдение стиля отступов, использование различных цветов и шрифтов для выделения синтаксических элементов исходного кода или изменение размера, чтобы сделать контент более удобным для чтения и понимания. Программы красивого форматирования исходного кода иногда называют форматировщиками кода или инструментами для приведения кода в порядок.

Математика в красивом шрифте

Красивое отображение обычно относится к представлению математических выражений в виде, близком к профессиональному набору. Например, в системах компьютерной алгебры, таких как Maxima или Mathematica, система может представить выражение "x ^ 2 + 3 * x" как Некоторые графические калькуляторы, такие как серии Casio 9860, HP 49/50 и HP Prime, TI 84 Plus, TI 89 и TI Nspire, TI 83 Plus с расширением PrettyPt, TI 84 Plus с тем же расширением или операционные системы с поддержкой "MathPrint", способны выполнять красивое отображение. Кроме того, ряд новых научных калькуляторов оснащены экранами с точечной матрицей, позволяющими красиво отображать выражения, например, серии Casio FX ES (Natural Display), Sharp EL W (WriteView), HP SmartCalc 300s, TI 30XB и Numworks. Многие программы для форматирования текста также поддерживают набор математических формул: TeX был разработан специально для высококачественного математического набора.

Красивая печать и код на основе тегов

Красивое форматирование в экземплярах языков разметки обычно связано с отступами тегов и строкового содержимого для визуального определения иерархии и вложенности. Хотя синтаксические структуры языков, основанных на тегах, существенно не различаются, отступы могут значительно варьироваться в зависимости от того, как интерпретируется язык разметки, или от описываемых данных. В MathML символы пробелов не несут информации о данных, значении или синтаксисе сверх того, что требуется синтаксисом XML. В HTML символы пробелов между тегами рассматриваются как текст и преобразуются в текстовые узлы в результате разбора. Хотя отступы могут быть щедро использованы в документе MathML, при красивом форматировании документа HTML необходимо проявлять особую осторожность, чтобы не создавать и не удалять дополнительные текстовые узлы вблизи содержимого или тегов, отражающих содержимое. Эта разница в сложности существенна с точки зрения автоматизированной операции красивого форматирования, где не требуются специальные правила или крайние случаи, как в более простом примере MathML. В примере HTML может потребоваться ряд последовательных взаимосвязанных алгоритмов для учета различных шаблонов элементов тегов и содержимого, соответствующих единому стилю и последовательно применяемых в различных экземплярах, что подтверждается разметкой. Этот компонент приложения используется для улучшения внешнего вида HTML, XML и связанных технологий в инструменте Pretty Diff.

Форматирование программного кода

Программисты часто используют инструменты для форматирования исходного кода языка программирования определенным образом. Правильное форматирование кода облегчает его чтение и понимание. Разные программисты часто предпочитают разные стили форматирования, такие как использование отступов и пробелов или расположение фигурных скобок. Форматировщик кода или инструмент для расстановки отступов преобразует исходный код из одного стиля форматирования в другой. Это относительно просто благодаря однозначному синтаксису языков программирования. Красивое форматирование кода включает в себя разбор исходного кода на составные структуры, такие как операторы присваивания, условные операторы, циклы и т. д. (см. также управление потоком выполнения), и форматирование их в соответствии с настройками, указанными пользователем в файле конфигурации. Инструменты для красивого форматирования кода существуют как отдельные приложения, а также встроены в текстовые редакторы и интегрированные среды разработки. Например, различные режимы языка в Emacs могут правильно и аккуратно расставлять отступы в блоках кода.

Красивый принтер Lisp

Ранним примером автоматического форматирования кода была программа Билла Госпера "GRINDEF" (т.е. 'функция шлифовки') (около 1967 года), которая использовала комбинаторный поиск с отсечением для форматирования программ LISP. Ранние версии работали с исполняемой (списочной структурой) формой программы Lisp и не учитывали специальное значение различных функций. Более поздние версии имели специальные правила чтения для включения неисполняемых комментариев, а также для сохранения читаемых макросов в неразвернутом виде. Они также поддерживали специальные правила отступов для специальных функций, таких как if. Термин "grind" (шлифовка) использовался в некоторых кругах Lisp как синоним автоматического форматирования кода.

Правила стиля проекта

Многие проекты с открытым исходным кодом установили правила оформления кода. Наиболее распространены форматирование GNU и стиль BSD. Основное различие между ними заключается в расположении фигурных скобок: в стиле GNU открывающая и закрывающая скобки располагаются на отдельных строках с одинаковым отступом. В стиле BSD открывающая скобка помещается в конце предыдущей строки, а после закрывающей скобки может следовать `else`. Также различаются размер отступа и расположение пробелов.