题
按如下方式格式化 C 代码有什么好处(如果有的话):
while(lock_file(lockdir)==0)
{
count++;
if(count==20)
{
fprintf(stderr,"Can't lock dir %s\n",lockdir);
exit(1);
}
sleep(3);
}
if(rmdir(serverdir)!=0)
{
switch(errno)
{
case EEXIST:
fprintf(stderr,"Server dir %s not empty\n",serverdir);
break;
default:
fprintf(stderr,"Can't delete dir %s\n",serverdir);
}
exit(1);
}
unlock_file(lockdir);
与更典型的东西相比,例如
while(lock_file(lockdir)==0) {
count++;
if(count==20) {
fprintf(stderr,"Can't lock dir %s\n",lockdir);
exit(1);
}
sleep(3);
}
if(rmdir(serverdir)!=0) {
switch(errno) {
case EEXIST:
fprintf(stderr,"Server dir %s not empty\n",serverdir);
break;
default:
fprintf(stderr,"Can't delete dir %s\n",serverdir);
}
exit(1);
}
unlock_file(lockdir);
我只是发现顶级版本很难阅读,并且很难为长块之外的语句获取正确的缩进级别,特别是对于包含多个嵌套块的长块。
我能看到的唯一优势就是与众不同,并在您编写的代码上留下您的指纹。
我注意到 vim 格式必须手动滚动才能处理最上面的情况。
解决方案
通过遵循一些格式和注释标准,首先您向其他将阅读和编辑您编写的代码的人表示尊重。如果您不接受规则并编写深奥的代码,最可能的结果是您将无法与其他人(程序员)有效地沟通。如果软件仅由您编写并为您编写并且没有人会阅读它,则代码格式是个人选择,但有多少现代软件仅由一个人编写?
其他提示
最上面的例子被称为“Whitesmiths 风格”。 维基百科关于缩进样式的条目 解释了几种风格及其优点和缺点。
没有什么。缩进和其他编码标准是一个偏好问题。
您看到的缩进是 怀特史密斯风格. 。第一版中对此进行了描述 代码完成 作为“开始-结束块边界”。这种风格的基本论点是,在像 C(和 Pascal)这样的语言中, if
控制单个语句或块。因此,整个块,而不仅仅是其内容,应该显示为从属于 if
- 一致缩进的声明。
XXXXXXXXXXXXXXX if (test)
XXXXXXXXXXXX one_thing();
XXXXXXXXXXXXXXX if (test)
X {
XXXXX one_thing();
XXXXX another_thing();
X }
当我第一次读这本书时(在 90 年代),我发现“开始-结束块边界”的论点很有说服力,尽管当我将其付诸实践(在 Pascal 中)时我不太喜欢它。我更不喜欢 C 语言,而且觉得读起来很混乱。我最终使用了 Steve McConnel 所说的“模拟纯块”(Sun 的 Java 风格, ,这几乎是 凯瑞).
XXXXXXXXXXXXXX X if (test) {
XXXXXX one_thing();
XXXXXX another_thing();
X }
这是 Java 编程中最常见的风格(这就是我整天所做的事情)。也和我最相似 以前的语言 这是一种“纯块”语言,不需要“模拟”。没有单语句体,块是控制结构语法中固有的。
IF test THEN
oneThing;
anotherThing
END
对我来说它看起来很标准。我要做的唯一个人更改是将大括号与上一行的开头对齐,而不是与下一行的开头对齐,但这只是个人选择。
无论如何,您正在查看的格式样式是 C 和 C++ 的标准格式,之所以使用它是因为它使代码更易于阅读,特别是通过查看缩进级别,您可以知道您所在的位置嵌套循环、条件语句等例如。:
if (x == 0)
{
if (y == 2)
{
if (z == 3)
{
do_something (x);
}
}
}
好的,在该示例中,很容易看出发生了什么,但如果您在这些 if 语句中放入大量代码,有时很难在没有一致缩进的情况下判断您所在的位置。
在您的示例中,查看 exit(1) 语句的位置 - 如果它不是这样缩进,则很难判断它在哪里。事实上,您可以看出它位于那个大 if 语句的末尾。
我会想到个人偏好吗?我猜它的代码块在一条垂直线上,这样可能更容易一目了然?就我个人而言,我更喜欢将大括号直接从上一行开始
代码格式是个人喜好。只要容易阅读,维护费用就够了!
这只是另一种风格——人们按照自己喜欢的方式编码,这是一种可接受的风格(尽管不是我的首选)。我认为与更常见的样式相比,它没有太大的缺点或优点,在这种样式中,括号不缩进,但其中的代码缩进。也许有人可以通过说它更清楚地界定代码块来证明这一点。
为了让这种格式具有“优势”,我们确实需要另一种格式的等效 C 代码来进行比较!
在我工作的地方,使用这种缩进方案是为了促进本土的折叠编辑器机制。
因此,我认为这种格式没有什么根本性的错误——在一定的合理限度内,格式是个人喜好的问题。