前言:这个问题不是这个问题的重复:
这个问题也不是基于意见的。我不是在寻求“最佳”风格。我不是在问什么是“正确”的事情。
我要问的是不同的编码风格如何缩进 switch 语句、它们的 case 标签和实际语句。
我对 switch 语句的缩进方式特别感兴趣
- K&R 风格
- Linux 内核风格
- GNU 风格
- Java 风格
我的想法是能够在我使用的任何代码中保持一致,但大多数缩进样式示例没有切换案例。我喜欢一致性,并且认为我正在写的内容实际上与我正在写的内容不符的想法是可以容忍的,但很不好吃。
由于问题是像雨水一样收集反对票,所以我决定找出每种风格到底从哪里来,以及他们对此事的看法。欢迎补充。(例如,我没有 K&R 或 Whitesmiths 的副本)
Java风格
由Oracle指定
www.oracle.com/technetwork/java/javase/documentation/codeconventions-142311.html
switch (condition) {
case ABC:
statements;
/* falls through */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
Run Code Online (Sandbox Code Playgroud)
break每当省略时指定注释。
Linux内核风格
在 Linux 内核中使用 - 我希望
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/kernel/kcov.c?h=v4.15.8
switch (size) {
case 8:
type |= KCOV_CMP_SIZE(0);
break;
case 16:
type |= KCOV_CMP_SIZE(1);
break;
case 32:
type |= KCOV_CMP_SIZE(2);
break;
case 64:
type |= KCOV_CMP_SIZE(3);
break;
default:
return;
}
Run Code Online (Sandbox Code Playgroud)
我找不到失败的例子。
GNU风格
有一本书。
https://www.gnu.org/prep/standards/standards.html
什么也没说。根据维基百科的建议,改为查找 GNU-Emacs。
https://github.com/emacs-mirror/emacs/blob/master/src/cm.c
switch (use)
{
case USEHOME:
statement;
break;
case USELL:
statement;
break;
case USECR:
statement;
break;
}
next statement;
Run Code Online (Sandbox Code Playgroud)
再说一次,没有失败。事实是:在...之中...正在...