Visual c++ 基本代码布局问题

Visual c++ 基本代码布局问题,visual-c++,programming-languages,coding-style,curly-braces,Visual C++,Programming Languages,Coding Style,Curly Braces,嗨,我有一个简单的问题,我问了3-4个不同的人,每个人都有不同的答案 哪种代码布局更好、使用更多 只要是一致的,这真的重要吗 在程序员的世界里,哪一种被视为更好的实践 乙二醇 (A) for(int i=0;i这完全是主观的。两者都很受欢迎。存在一些已发布的样式指南——例如,谷歌的is和它规定的功能: ReturnType ClassName::FunctionName(Type par_name1, Type par_name2) { DoSomething(); ... } 至于大

嗨,我有一个简单的问题,我问了3-4个不同的人,每个人都有不同的答案

哪种代码布局更好、使用更多

只要是一致的,这真的重要吗

在程序员的世界里,哪一种被视为更好的实践

乙二醇

(A)


for(int i=0;i这完全是主观的。两者都很受欢迎。

存在一些已发布的样式指南——例如,谷歌的is和它规定的功能:

ReturnType ClassName::FunctionName(Type par_name1, Type par_name2) {
  DoSomething();
  ...
}
至于大厦:

if (condition) {  // no spaces inside parentheses
  ...  // 2 space indent.
} else {  // The else goes on the same line as the closing brace.
  ...
}
与其他块类似的示例


所以,看看一些这样的风格指南,选择一个来自某个有声望的来源并且你喜欢的,如果有人反对你的风格,就说“哦,我是从X那里学来的”(X可能是谷歌,或者你喜欢的任何其他来源(还有更多的来源).

这里没有对错。这取决于您或您的团队/组织的偏好

就支架而言,我目前的团队选择了选项B,但实际上我更喜欢选项A


就我个人而言,我建议增加一点间距,尤其是在“for”和“if”之后,并在选项B上增加一点缩进,以提高可读性。但是,这只是我的偏好。

在实践中,几乎所有情况下,都有一个明确的答案:使用您正在使用的代码库中当前使用的样式。如果您正在启动一个新项目,请使用由e将维护您的代码的团队


我使用过的代码库基本上都源于GCC和其他FSF软件,这意味着我所有的项目都在单独的一行中使用了带有“{”的样式。我可以为为什么这样做“更好”找到理由,但这是一个主观风格的问题。在项目和团队中保持一致客观上更好。

什么,没有中间立场?只有两个例子,每个都是为了采取(相对)极端的立场

很明显,您遗漏了一大堆中间示例,其中有很多格式规则略有不同

如果你想不出至少十种以上的变体,你就不会真正投入任何精力。两种变体不足以关注细微差别

你可以——如果你愿意的话——偷懒。一个像样的IDE会为你格式化。我使用Eclipse和它为我格式化,这就是我所使用的,根本不考虑它


你也可以下载和阅读开源代码,并实际模仿你在那里找到的风格。这是一种不那么懒惰的方法,你确实需要阅读别人的代码。

我不确定有没有可能找到一个比另一个更好的原因,这不是完全主观的,只对一小部分项目有效

我喜欢压缩风格,它倾向于使代码更紧凑,因为我喜欢我的函数紧凑,适合屏幕,这很有帮助

但这会让其他人发疯,他们不喜欢看到一个街区的起点和终点都在自己的线上。我明白他们的意思

通常这没什么大不了的,因为每个开发人员都使用自己的设置,我们让源代码管理系统以不可知的格式存储它(不管是哪种格式)


当然,正如一些人已经指出的,您应该使用代码库或团队已经使用的样式


然而,如果你在大学或从未使用过使用大括号的语言,我建议你将大括号放在他们自己的行中。我发现,新开发人员在将大括号与代码放在同一行时,可能无法识别缺少的大括号。这可能与现代IDE没有多大关系。

在他年轻的时候,我曾经相信所有这些问题都是意见问题,是主观的,最好留给个人去考虑

随着年龄的增长,我的视力变得越来越散光。如果不做手术,散光可以用眼镜或隐形眼镜来矫正,但矫正还远远不够完美

散光使阅读更困难,包括阅读代码

对于像我这样有散光的人来说,
带下划线的标识符\u间距
比带camelcaseWordBreak的标识符
更容易阅读

同样,对我来说,单独一行的大括号比与代码共享一行的大括号更容易阅读


因此,我推荐你建议的第二种样式,因为它更容易理解。

我只想在“for”和“if”后面留一个空格。是的,我同意额外的空格。我从来没有习惯过k和R样式的大括号。我基本上从k&R(第一版)学过C,所以这是唯一的样式,而且“使用”很容易(我怀疑类似的情况也适用于许多其他谷歌用户——我们既没有K也没有R,但我们有汤普森、普雷索托、派克……;-)+1我在C ANSI中采用了这种编程风格!此后我从未改变过我的风格,也从未有人反对过,相反,我的同事们喜欢它,并开始将这种风格打造成自己的风格!嘿嘿。。。
ReturnType ClassName::FunctionName(Type par_name1, Type par_name2) {
  DoSomething();
  ...
}
if (condition) {  // no spaces inside parentheses
  ...  // 2 space indent.
} else {  // The else goes on the same line as the closing brace.
  ...
}