Ответ заключается в том, что не может быть единого правильного символа отступа для каждой ситуации. Форматирование с использованием символов негибко и может вызвать конфликт, когда в команде используются разные стили.
Единственный способ безошибочно и гибко форматировать код с использованием различных стилей форматирования - это делать это виртуально, то есть без символов отступа. Единственный известный мне редактор кода, который поддерживает это, - это тот, который используется в приведенном ниже примере:
Для демонстрации виртуального форматирования , ниже скриншот из XSLT редактора * , который использует этот метод вдавливания (есть также короткое видео здесь ). Каждый символ в XSLT выделен желтым цветом, для наглядности, чтобы четко видеть только символы табуляции или пробела в контенте. Отступ кода обрабатывается системой визуализации редактора, регулирующей левое поле (которое имеет белый фон).
Единственные начальные пробельные символы предшествуют строкам Книги , поскольку это буквальное текстовое содержимое, а не код, эти пробельные символы должны быть сохранены.
С помощью виртуального форматирования вы выбираете ширину отступа в соответствии с окружением и стилем отступа, не затрагивая символы в исходном файле. Вы можете даже установить ширину отступа в 0, если вам нужно плоское представление кода, как показано ниже:
Чтобы противопоставить это форматированию пробелов, тот же XSLT, открытый в редакторе без виртуального форматирования, преобразуется автоформатером этого редактора в следующее:
Большие пустые желтые блоки на скриншоте выше ясно показывают символы пробела, добавленные форматером обычного редактора. К сожалению, теперь их невозможно отличить от реального контента, поэтому XSLT придется изменить, чтобы исправить эту проблему.
Резюме
XSLT, возможно, является крайним случаем, но этот принцип применим ко многим языкам программирования: символы должны использоваться для содержимого, а для форматирования следует искать альтернативный метод.
** Раскрытие: редактор XSLT с виртуальным форматированием был разработан моей собственной компанией *