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

时间:2010-06-09 12:39:10

标签: language-agnostic switch-statement indentation

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

switch (i) {
case 1:
    ...
case n:
    ...
}

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

switch (i) {
    case 1:
        ...
    case n:
        ...
}

哪种方式更具可读性和赏心悦目?我仍然没有百分之百地决定什么对我最好,所以我想坚持那些读我的代码的人最好的。

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

7 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:10)

根据"official" Java Code Conventions,它是第一个变体(没有针对案例的额外缩进)。

答案 2 :(得分:8)

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

switch (i) 
{
    case 1:
        ...
    case n:
        ...
}

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

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

switch (i) 
{
    case 1:
        do_something();
    case n:
        do_something_else();
}

我发现这是switch case构造最易读的格式。

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

答案 3 :(得分:1)

第一种方法对我来说具有逻辑意义,但我也更喜欢第二种方法。我认为我们大多数人都习惯于期望大括号内的代码缩进。

答案 4 :(得分:1)

第一个是标准开关盒缩进。

switch (i) {

case 1:
    .... // Here you can write more code in a row than using the second way
    break;
case n:
    ....
    break;
default:
    ....
    break;
}

注意switch(i)和case 1之间的新插入行:

答案 5 :(得分:0)

我使用第二种方式:

switch (i) {
    case 1:
        ...
    case n:
        ...
}

答案 6 :(得分:0)

如果您更喜欢第二种情况,那么为了保持一致性,您还应该缩进else声明的if部分:

if( test )
    do_something( );
    else
        do_something_else( );

大多数人不这样做,并且惯例是将分支保持在与语句相同的级别上,因此Java更喜欢第一个作为case语句的测试,并且代码分支在级别上比if / then /更一致否则构建。

我也在他们之间翻转,但最后还是更喜欢第一个:

switch (i) {
case 1:
    ...
case n:
    ...
}