这种奇怪的C代码格式是什么?
格式化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格式必须手动滚动才能处理大写字母。
解决方案
回答
没有。缩进和其他编码标准是优先考虑的问题。
回答
个人偏好我会想到吗?我猜它在一条垂直线上有代码块,因此一目了然可能更容易解决吗?我个人比较喜欢将括号直接从上一行开始
回答
它只是另一种样式-人们以自己喜欢的方式进行编码,这是一种公认的样式(尽管不是我的首选)。与没有缩进括号而在其中包含代码的更常见的样式相比,我认为它没有任何缺点或者优势。也许可以通过说它更清楚地界定代码块来证明这一点。
回答
代码格式化是个人喜好。只要通俗易懂,就需要付费维护!
回答
为了使这种格式具有"优势",我们确实需要另一种格式的等效C代码进行比较!
在我工作的地方,使用这种缩进方案是为了促进自家的折叠编辑器机制。
因此,我认为在一定的合理范围内,这种格式从根本上没有错,格式设置是个人喜好问题。
回答
通过遵循一些格式和注释标准,首先,我们对将要阅读和编辑我们编写的代码的其他人表示尊重。如果我们不接受规则并以某种方式编写深奥的代码,则最可能的结果是我们将无法与其他人(程序员)进行有效的交流。如果仅由我们自己为我们编写软件,并且我们是为我们自己编写的,并且没有人希望阅读,那么代码格式是个人选择,但是仅一个人编写了多少现代软件?
回答
在我看来,这很标准。我唯一要进行的个人更改是将花括号与上一行的开头对齐,而不是与下一行的开头对齐,但这只是个人选择。
无论如何,我们正在使用的格式化格式是针对C和C ++的一种标准格式,之所以使用该格式,是因为它使代码更易于阅读,尤其是通过查看缩进级别,我们可以知道我们所处的位置嵌套循环,条件等。例如:
if (x == 0) { if (y == 2) { if (z == 3) { do_something (x); } } }
在该示例中可以很容易地看到正在发生的事情,但是如果在这些if语句中放入很多代码,有时很难确定没有一致的缩进的位置。
在示例中,请查看exit(1)语句的位置-如果未将其缩进,那么很难知道它在哪里。实际上,我们可以知道它位于该大if语句的末尾。
回答
最著名的例子是"怀特史密斯风格"。维基百科关于缩进样式的条目解释了几种样式以及它们的优缺点。
回答
我们看到的缩进是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风格,几乎是K&R)。
XXXXXXXXXXXXXX X if (test) { XXXXXX one_thing(); XXXXXX another_thing(); X }
这是用于Java编程的最常见的样式(这是我整天要做的事情)。它也最类似于我以前的语言,即"纯块"语言,不需要"仿真"。没有单语句主体,块是控制结构语法中固有的。
IF test THEN oneThing; anotherThing END