【问题标题】:AStyle for Google C++ style guideAStyle for Google C++ 风格指南
【发布时间】:2014-07-04 06:25:08
【问题描述】:

我刚开始使用 Astyle 和 VS-2013 for C++。我想将其配置为遵循Google C++ style guide。我注意到 Astyle 允许导入配置文件,所以我想知道是否有人完成了艰苦的工作并将其配置为遵循 Google C++ 样式指南?如果不是,那么我应该在设置窗口中进行哪些调整:

有什么想法吗?

【问题讨论】:

  • 值得注意的是,Google C++ 风格指南受到 C++ 社区的严厉批评,甚至其支持者也认为它高度专业化了 Google 的要求,而且模板不适合一般使用。
  • 谢谢@KonradRudolph,这很有趣......你能指出一些指出问题的来源吗?此外,您会推荐遵循什么风格指南?
  • Hacker News 讨论了它的缺点。 C++ chat 还有更多。我不知道有更好的指南,但Programmers.SE 已经对此有疑问了。
  • @ahmadh:如果必须手动遵守,许多编码人员对严格的样式指南很不满意。就个人而言,既然您已经提到了astyle,我在设置自动 Astyle 运行(带有预配置选项)作为单元测试的一部分方面有很好的经验,将任何重新格式化的文件保存为@ 987654328@。此类文件的存在使测试失败。通过这种方式,编码人员可以获得 1) 关于预期样式的反馈,2) 应用 样式的便捷方法(通过在检查后将 .reformatted 文件复制到他们的文件上),以及 3) 你不需要不必自己检查合规性。
  • (ctd.) 如果您原谅自我推销,请查看 JAWS 以获取此示例设置(在 tools/check.cpp.in 中)。 (JAWS 还会检查文件名和源文件本身中的字符集。)

标签: c++ visual-studio code-formatting astyle google-style-guide


【解决方案1】:

首先,我不认为 AStyle 足够强大,无法让您的代码完全遵循 google C++ 样式指南。比如下面的代码段,即Function Calls中的一个例子,不能通过AStyle获取,而是手动对齐。

DoSomething(
    argument1,  // 4 space indent
    argument2,
    argument3,
    argument4);

此外,我认为推荐行参数--style=google / -A14 与样式指南不符。
我自己的选项文件如下:

# 2 space indent
-s2
# Indent 'class' and 'struct' access modifiers, 'public:', 'protected:' and 'private:', one half indent.
-xG
# Indent 'switch' blocks so that the 'case X:' statements are indented in the switch block. The entire case block is indented.
-S
# Do not retain a backup of the original file. The original file is purged after it is formatted.
#-n
# Don't break one-line blocks.
-O
# Don't break complex statements and multiple statements residing on a single line.
-o
# Attach a pointer or reference operator (*, &, or ^) to the variable name (right).
-k3
# Insert space padding after paren headers only (e.g. 'if', 'for', 'while'...).
-H
# Insert space padding around operators.
-p

恕我直言,AStyle 将帮助您转换大代码,但有些细节只能手动转换。

【讨论】:

  • 我相信 AStyle 相反提供了完美的论证意图,看起来和你做的一模一样。通过将制表符放在行缩进的开头,并从那里到参数开头的空格。这是我在工具中见过的最好的下一行自动缩进。 (emacs->tabify 做得不对,它使用制表符+最少的空格,就像 Visual Studio 一样。)你必须使用 --max-instatement-indent=70 来获得你(和我)需要的东西:)
  • @v.oddou。对不起。我改变了例子。我认为 AStyle 没有该示例的命令行参数。是吗?
  • AStyle 并不完美,这就是我停止使用它的原因。手动压痕的成本不高,而且种类繁多。我非常喜欢 AStyle,但如果它没有绑定到 ctrl+s,我最终几乎没有使用它,以避免弄乱我手工修饰的特殊地方。
猜你喜欢
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 2011-01-13
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多