人们一直在讨论如何缩进代码,就像代码存在的时间一样长,但没有人解决这个问题。Java的Checkstyle将续行对齐到开括号下方,ESLint和Prettier各自制定自己的规则,Go的gofmt使用制表符并耸耸肩,RuboCop为您提供一个菜单,Python的PEP 8选择四个空格,其余取决于个人口味。每种工具都有自己的语法,团队花费数小时在细节上争论。我建议为任何编程语言的源代码制定一个简单的单调缩进规则。
这个规则应该可以解决大部分关于代码格式的争议。它很容易作为额外的检查添加到任何现有的样式检查器中,或者独立部署为一个小型独立工具。
根据这个规则,这段Java代码是非法的:
这个是合法的(而且在我看来,还很漂亮):
这个想法很简单:沿着代码向下走,你可以一次向右移动一个槽位,但可以向左跳回任意多个槽位。你不能在前进的过程中跳过步骤,但可以自由地跳出。每一行仍然落在一个网格上,而不是在中间。
加上成对括号规则,这使得代码看起来非常理想:括号垂直对齐,缩进永远不会跳得比必要的更远。
顺便说一句,我们实验性语言EO的解析器在语法上强制执行这一规则。这类似于Python的离边规则,其中缩进定义了块结构,而不是大括号。然而,在EO中一切都是对象,而在Python中不是。这就是为什么EO可以更严格地要求在任何地方都呈单调步骤的原因。
Translated by ChatGPT gpt-3.5-turbo/42 on 2026-05-25 at 09:40
