在交换机中缩进案例的首选方法是什么?

ale*_*dev 26 language-agnostic indentation switch-statement

当我在Eclipse中编写另一个开关时,我再次遇到了一个相当奇怪的(至少对我来说)默认缩进,它适用于'switch'语句:

switch (i) {
case 1:
    ...
case n:
    ...
}
Run Code Online (Sandbox Code Playgroud)

我倾向于采用另一种方式:

switch (i) {
    case 1:
        ...
    case n:
        ...
}
Run Code Online (Sandbox Code Playgroud)

哪种方式更具可读性和赏心悦目?我仍然没有百分之百确定什么对我最好,所以我想坚持最适合其他人阅读我的代码.

顺便说一下,如果这个问题过于主观,你可以自由地结束这个问题.:)

Rat*_*eek 14

我也喜欢第二种方式.但是,在特定应用程序内和/或特定团队中保持一致比在某种方式下缩进更为重要.


Chr*_*her 12

根据"官方"Java代码约定,它是第一个变体(没有额外的缩进案例).

  • 很好,Oracle 的(或者实际上是 Sun 的)约定仍然存档,但该信息上次更新是在 1999 年,因此现在无效。Google 的 [Java 样式指南](https://google.github.io/styleguide/javaguide.html#s4.8.4-switch) 确实建议缩进块内容,但 (2认同)

Bel*_*lla 8

我倾向于将所有控制结构体缩进为单个(4空格)标签,如下所示:

switch (i) 
{
    case 1:
        ...
    case n:
        ...
}
Run Code Online (Sandbox Code Playgroud)

我认为切换是外部控制结构和case指令的一部分(即使它们是控制结构的一部分).

然后,我会进一步选中缩进每个案例,如下所示:

switch (i) 
{
    case 1:
        do_something();
    case n:
        do_something_else();
}
Run Code Online (Sandbox Code Playgroud)

我发现这是switch case结构中最易读的格式.

正如jkohlhepp所提到的那样,你正在研究的项目的代码风格约定是最重要的,如果你正在开发一个没有项目的项目,那么值得开发一些.

  • uggg,块的开括号应该与块定义在同一行. (5认同)
  • +1 我也将左大括号放在新行上。 (3认同)
  • -1 因为你把开始大括号放在一个新行上(我显然不是真的贬低你的答案,但我真的很讨厌),但是 +1(这次是真的)你如何缩进其他一切。 (3认同)

Upu*_*ara 2

我用第二种方式:

switch (i) {
    case 1:
        ...
    case n:
        ...
}
Run Code Online (Sandbox Code Playgroud)