QR code

Monotonic Indentation

  • Translated by to

Люди спорят о том, как отступать код, с тех пор, как существует код, и никто не решил этот вопрос. Checkstyle для Java выравнивает продолжения под открывающей скобкой, ESLint и Prettier придумывают свои собственные правила, gofmt для Go использует табуляцию и пожимает плечами, RuboCop предлагает вам меню, PEP 8 для Python выбирает четыре пробела и оставляет остальное на вкус. У каждого инструмента свой собственный диалект, и команды тратят часы на борьбу за детали. Я предлагаю простое правило монотонного отступа для исходного кода любого языка программирования:

Это правило должно разрешить большинство споров о стиле форматирования кода. Его легко добавить в качестве дополнительной проверки к любому существующему стилевому проверяльщику, или развернуть в качестве небольшого самостоятельного инструмента.

Согласно правилу, этот Java-код незаконен:

Этот законный (и красивый, на мой взгляд).

Идея проста: спускаясь по коду, вы можете сдвигаться вправо на одну клетку за раз, но можете вернуться влево на столько клеток, сколько захотите. Вы не можете пропускать шаги по пути вниз, но можете свободно прыгать вверх. Каждая строка все равно оказывается на сетке, никогда не между клетками.

Вместе с правилом Парных Скобок это делает код выглядеть идеально: скобки выравниваются вертикально, и отступ никогда не прыгает дальше, чем необходимо.

Кстати, парсер EO, нашего экспериментального языка, синтаксически принуждает к соблюдению этого правила. Это похоже на правило оффсайда в Python, где отступ определяет структуру блока, а не скобки. Однако в EO все является объектом, в то время как в Python нет. Поэтому EO может позволить себе быть более строгим и требовать монотонных шагов везде.

Translated by ChatGPT gpt-3.5-turbo/42 on 2026-05-25 at 09:40

sixnines availability badge  GitHub stars