前言:这个问题与此问题不重复:
这个问题也不是基于意见的。我不是在追求最好的"样式。我不是在问什么是"对"要做的事。
我要问的是不同的编码样式如何缩进switch语句,它们的case标签和实际语句。
我对如何缩进switch语句特别感兴趣
- K& R风格
- Linux内核风格
- GNU风格
- Java风格
我的想法是能够在我正在使用的任何代码中保持一致,但大多数缩进样式示例都没有切换案例。我喜欢一致性,而且我写的东西与我写的东西实际上并不匹配的想法是可以忍受的,但是不讨厌。
答案 0 :(得分:1)
由于这个问题正在收集像雨水一样的收尾,我决定找出每种风格来自哪里以及他们在这件事上说了些什么。随意添加。 (例如,我没有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;
}
指定省略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;
}
我无法找到落实的例子。
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;
再次,没有突破。原样:在... ... ... ... ...
答案 1 :(得分:0)
摘自他的书(第59页):
switch (c) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
ndigit[c-'0']++;
break;
case ' ':
case '\n':
case '\t':
nwhite++;
break;
default:
nother++;
break;
}
有点不适应,但其他方面还是可见的编码风格。