为什么开关内的case语句没有被某些IDE缩进?

时间:2011-04-10 19:54:44

标签: c++ c syntax

  

可能重复:
  Why don't people indent C++ access specifiers/case statements?

我有一个语法问题...不是关于如何,而是为什么。许多IDE(如Eclipse和Qt Creator)会自动缩进switch,如下所示:

Day randomDay = getRandomDay(); /* returns 'enum Day' */

switch (randomDay) {
default:
case Monday:
  /* ... */
  break;
case Tuesday:
  /* ... */
  break;
/* ... */
}

我总是发现这与一般的代码缩进规则不一致,我更喜欢这样做:

Day randomDay = getRandomDay(); /* returns 'enum Day' */

switch (randomDay) {
  default:
  case Monday:
    /* ... */
    break;
  case Tuesday:
    /* ... */
    break;
  /* ... */
}

类似地,C ++类定义通常是这样缩进的:

class MyClass {
public:
  /* ... */
}

相反:

class MyClass {
  public:
    /* ... */
}

为什么有些人选择不缩进case声明?

3 个答案:

答案 0 :(得分:10)

  

代码样式就像混蛋。每个人都有一个,但很少有人像其他人一样。

这也适用于此。有些人喜欢它,因此在为IDE编写缩进逻辑时就这样做了。大多数好的IDE都可以选择配置此行为。

这种风格的一个可能原因是,不缩进标签似乎很常见 - 而且案例是一种特殊的标签。

答案 1 :(得分:1)

这纯粹是个人喜好的事情。缩进级别,制表符与空格以及大括号放置一直是程序员火焰战争的主题。

某些编辑器或IDE具有默认值,这些默认值是根据目标受众中某些程序员的“常见”约定设置的。如果您不喜欢默认设置,几乎总有一种方法可以自定义它。

如果你是一个程序员团队,你必须决定某些约定,否则,你最终会重新格式化彼此的代码,直到时间结束!

答案 2 :(得分:0)

Eclipse允许从多种预设样式中进行选择,例如: K& R,每个都可以完全自定义,或创建自己的默认值。

对于每种风格选择都有一个非常合理的解释,Stroustrup也在他的C++ FAQ中解决了这个问题。并不重要 - “做出感觉良好的事情”(在合理范围内)。