【问题标题】:Why aren't case statement inside a switch being indented by some IDEs? [duplicate]为什么某些 IDE 不缩进 switch 中的 case 语句? [复制]
【发布时间】:2011-08-02 15:02:33
【问题描述】:

可能重复:
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 语句?

【问题讨论】:

  • 因为他们显然不同意你的观点。不能争论口味。
  • 但是他们不缩进 case 语句背后的逻辑是什么?有些人喜欢这样做是有原因的,否则没人会这样做。
  • 问题是“为什么有些人选择不缩进?”如果是这样,那么答案是程序员的偏好之一。如果问题是“为什么有些 IDE 拒绝缩进?”那么答案通常是,因为缩进通常是一个可配置的选项,程序员并没有告诉 IDE 做任何不同的事情。
  • 这是重复的。我希望在 SO 上有一个自动重复查找器……我知道以前有人问过这个问题。 ...你在这里找到它:stackoverflow.com/questions/4299729/…

标签: c++ c syntax


【解决方案1】:

代码风格就像混蛋。每个人都有一个,但只有少数人像其他人一样。

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

这种风格的一个可能原因是不缩进标签似乎很常见 - 而大小写是一种特殊的标签。

【讨论】:

    【解决方案2】:

    这纯属个人喜好。缩进级别、制表符与空格以及大括号的位置是,并且将永远是程序员之间的激烈争论。

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

    如果您在一个程序员团队中工作,则必须确定某些约定,否则,您最终将重新格式化彼此的代码,直到时间结束!

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-28
        • 2014-10-05
        • 2011-05-29
        相关资源
        最近更新 更多