有没有"大名实体"发布C++ 0x语法最佳实践

bpw*_*621 1 c++ coding-style c++11

虽然这种"对话"很快就会变成像"这就是我的想法......"这样的问题但问题并非如此.是否有任何"大名鼎鼎的实体"(例如谷歌或喜欢的歌曲,斯科特迈耶斯等等)发布了任何免费提供的内容,这些内容决定/建议他们认为代码库的语法指南行应该适用于某些/任何C++ 0x功能?

例如,我已经看到了各种模板的示例代码,这些模板以相对于省略号的不同间距编写.有没有人权衡过任何人对一些/所有结构中最具表现力/可读性的信念的评价?

@jalf:即使你不相信任何人应该告诉你如何做这些琐事,也有大型组织在其编码标准中有格式相关标准的例子(例如Google,Gnu),但这些并不与C++ 0x功能(这就是我的要求).

Jam*_*lis 5

与所有编码风格问题一样,问题的答案不可避免地"取决于".例如,短lambda肯定应该是单行:

std::transform(v.begin(), v.end(), v.begin(), [](int i) { return i + 1; });
Run Code Online (Sandbox Code Playgroud)

不能轻易放在一条线上的较长的lambda应分布在多条线上:

std::transform(v.begin(), v.end(), v.begin(), [](int i) -> int
{ 
    // lines
    // of 
    // code
    return i + 1; 
});
Run Code Online (Sandbox Code Playgroud)

起始大括号是否与呼叫transform或自己的线路在同一条线路上是否重要?没有.

在我看来,关于代码格式化的唯一好的,一致的规则是"如果它看起来很难看,那就让它看起来不那么难看."

  • 这完全是我自己的看法,但第二个看起来对我来说非常可怕.你从一个函数调用开始,然后在行的末尾某处你引入一个有效的函数定义.快速扫描代码,这块块是lambda的一部分并不明显.我认为我的政策是,一旦你的lambda已经发展到超过一行,它应该得到一个描述性的名称,应该被提升为一个函数或函数对象. (2认同)
  • @Charles:我不认为这是一个问题.我认为很明显它是"变换"的一部分,这才是最重要的.无论是lambda,函数调用还是其他任何东西,它都处于我们期望看到"如何转换"参数的位置.我有几行很好.当然,10线lambda会有点矫枉过正.但是,是的,主观的,当然. (2认同)