为什么开关语句上有奇怪的缩进?

2022-08-31 11:16:17

为什么恕我直言,缺少“case”的缩进 - switch语句中的关键字被认为是好的风格?

没有缩进“case”关键字似乎是几乎每个IDE中的默认格式设置选项:

switch (i){
case 0:
    break;
case 1:
    break;
}

而我发现这种格式更直观:

switch (i){
    case 0:
        break;
    case 1:
        break;
}

这背后有什么逻辑,让我无法理解吗?


答案 1

这些事例在逻辑上是标签。许多人将标签放在与他们所在的块相同的缩进级别。在我看来,这样更容易阅读文本。

我将其与您可以滚动浏览的时间轴进行比较。您在时间线本身上有标记,而不是缩进到内容中。然后,您可以快速指出标签/标记的位置,而无需将视线从基线上移开。


答案 2

4个字:没有块,没有缩进

案例没有打开一个块。在 C 或 C++您甚至可以将变量声明(但初始值设定项不被调用,除了静态变量,这是一个陷阱)放在开关块的开头。你可以用 做很多奇怪的事情,比如达夫的设备switch

因此,由于案例只是标签,因此缩进它们似乎并不那么直观,并且大多数样式选择的样式不是缩进。