标签: google-style-guide

为什么Google会在成员变量之后命名访问者和变更者?

http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Function_Names#Function_Names

常规功能有大小写; 访问器和mutator匹配变量的名称:MyExcitingFunction(),MyExcitingMethod(),my_exciting_member_variable(),set_my_exciting_member_variable().

是否隐藏了用户隐藏实现细节的整个封装点,因此他/她不知道accessor/mutator方法是否返回/修改成员变量?如果我更改变量名称或更改它存储在对象中的方式怎么办?

编辑:

如果我有一个实例变量,int foo_它似乎很简单

int foo() const { return foo_; }
Run Code Online (Sandbox Code Playgroud)

但是,如果我再补充一点返回的另一种方法foo_ + 2,应我的名字,如果bar还是GetBar

int bar() const { return foo_ + 2; }
int GetBar() const { return foo_ + 2; }
Run Code Online (Sandbox Code Playgroud)

如果我选择GetBar并稍后决定将返回的值缓存在另一个成员变量中bar_,我是否必须将该方法重命名为bar

c++ oop encapsulation coding-style google-style-guide

6
推荐指数
2
解决办法
1022
查看次数

Sublime Text支持Google样式指南

我正在使用崇高的文字3编写C ++代码。我们遵循CPP的Google样式指南

我正在寻找使用样式指南作为参考来提供自动重入和短绒棉纸支持的任何插件。

c++ ide google-style-guide sublimetext

6
推荐指数
1
解决办法
3496
查看次数

要求 python 导入为模块

Google 的 Python 风格指南指出,应该:“仅对包和模块使用导入”。

https://google.github.io/styleguide/pyguide.html#Imports

是否有工具可以标记违反此建议的行为?

Pylint 不这样做。例如,以下内容: 是否有基于 Google 风格指南的 Python lint 工具?

创建一个test.py违反了准则(exists是一个函数,而不是一个模块):

"""Test file for pylint"""
from os.path import exists

exists('/home')
Run Code Online (Sandbox Code Playgroud)

然后,使用 rc 文件运行 pylint 就可以了:

$ pylint --rcfile=googlecl-pylint.rc -r n -s n  test.py
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)

搜索可能的代码:http://pylint-messages.wikidot.com/all-codes,我没有看到任何看起来会对此发出警告的内容。

我也没有在 pep8 或 pyflakes 中看到任何可以捕获此问题的内容。

python lint google-style-guide

6
推荐指数
1
解决办法
1340
查看次数

在整个项目上运行CPPlint

我想在整个项目上运行cpplint.py而不是单个文件来获取项目中所有C / C ++文件的报告。如何在macOS和Windows上执行此操作?

google-style-guide cpplint

5
推荐指数
1
解决办法
5589
查看次数

r 80 个字符的行限制

我一直致力于编写可读的代码和工作风格指南。我理解 80 个字符的行限制建议。

有时,如果我坚持 80 个字符的限制,我会编写一长串代码,这些代码的可读性会降低。

这是我如何格式化代码的示例(不符合 80 个字符,破折号表示字符)

0--------1---------2---------3---------4---------5---------6---------7---------8   
df$rslt[df$test == "M. ovipneumoniae by ELISA" |
        df$test == "PCR-Mycoplasma ovipneumoniae"] <- df[df$test == "M. ovipneumoniae by ELISA" |
                                                         df$test == "PCR-Mycoplasma ovipneumoniae",
                                                         "result"]
Run Code Online (Sandbox Code Playgroud)

如果我要遵循 80 个字符的限制,我可以输入如下代码

0--------1---------2---------3---------4---------5---------6---------7---------8
df$rslt[df$test == "M. ovipneumoniae by ELISA" |
          df$test == "PCR-Mycoplasma ovipneumoniae"] <- df[df$test == 
                                                             "M. ovipneumoniae 
                                                              by ELISA" |
                                                           df$test == 
                                                             "PCR-Mycoplasma 
                                                              ovipneumoniae",
                                                            "result"]
Run Code Online (Sandbox Code Playgroud)

我发现第一个例子更具可读性。每个逻辑操作都是一个新行,读起来很清楚。第二个例子很容易理解,但是当我达到 80 个字符的限制时变得复杂。我可以阅读它,但我将字符串分成多行,将单个逻辑操作分成多行等。

对于较长的字符串,是否可以超过 80 个字符的限制(除了所有潜在的格式问题)?

coding-style r google-style-guide

5
推荐指数
1
解决办法
2031
查看次数

Google风格指南"<chrono>是未经批准的C++ 11标题"

为什么<chrono>Google CPP指南中有未经批准的标题?我在Google CPP风格指南中找不到任何直接提及的内容. 这一点提到可移植性问题与<ratio><cfenv>,但只字未提<chrono>.

c++ google-style-guide c++11

5
推荐指数
1
解决办法
4010
查看次数

为什么 Google C++ 风格指南推荐 PascalCase 函数名称?

歌风格指南说:

通常,函数应以大写字母开头,并且每个新单词都有一个大写字母(也称为“大驼峰式大小写”或“帕斯卡大小写”)。

对我来说,帕斯卡的情况看起来很陌生,我很不愿意适应这个指导方针。风格指南使用 PascalCase 的理由是什么?

c++ google-style-guide

5
推荐指数
1
解决办法
2325
查看次数

Google 样式文档字符串示例部分未呈现为代码片段

我最近开始向我的项目添加文档,并且我正在尝试遵循 Google 风格指南。我正在使用 Sphinx 生成文档,并使用 Sphinx 扩展拿破仑来弥合 Google 样式指南和 reST 之间的差距。

我在渲染参数和注释时没有问题,但我似乎无法让示例部分渲染代码片段。

class Chicken(object):
      """Animal that lays egg and has feathers

         Note:
             Chickens love to eat feed

         Example:
             chicken.eats(feed)
      """
Run Code Online (Sandbox Code Playgroud)

我还尝试在示例部分使用双冒号。

Example::
Run Code Online (Sandbox Code Playgroud)

google-style-guide python-sphinx sphinx-napoleon

5
推荐指数
1
解决办法
3304
查看次数

仅当当前行溢出 clang 格式时才支持新行

我最近决定.clang-format在我的 C++ 项目中包含一个文件,以使代码更加统一和易于阅读。我最喜欢谷歌的默认设置,除了我想使用 4 个空格缩进而不是两个。

这样做的问题是当当前行超出 80 个字符的列限制时,它会使某些语句更难阅读。例如,在溢出的 if 语句中:

if (some_condition || some_other_condition ||
    yet_another_condition) {
    // block starts here
}
Run Code Online (Sandbox Code Playgroud)

对齐方式yet_another_condition与 if 块开头的对齐方式相匹配,这使得在没有某种中断的情况下很难阅读。理想情况下,我希望在这种情况下发生的事情是这样的:

if (some_condition || some_other_condition ||
    yet_another_condition)
{
    // block starts here
}
Run Code Online (Sandbox Code Playgroud)

但是,当当前行溢出到下一行时,我只希望在新行上打开大括号,就像上面的例子一样。在所有其他情况下,我希望左括号在同一行上(这适用于 if/for/while/switch 等语句以及函数)。

是否可以在我的.clang-format文件中指定此行为,同时保持其余 Google 默认值不变?

c++ formatting curly-braces google-style-guide clang-format

5
推荐指数
1
解决办法
982
查看次数

Python Google 风格的无参数函数 DocString

我已经使用 Google 风格的 Python 文档字符串格式有一段时间了。我处理没有参数的函数/方法的方式突然对我来说看起来不正确。我做了一些搜索,但在网上找不到任何指定如何处理这种情况的信息。

当没有退货时,我见过None二手货,我对此表示同意,因为从技术上讲,这就是退货的原因。但是,使用Noneargs 可能意味着实际上有一个参数的类型预计为:NoneType

目前,我一直在做的事情看起来像这样:

def foo():
    """
    blah blah blah

    Args:
        None
    Returns:
        The number 5
    """
    return 5
Run Code Online (Sandbox Code Playgroud)

我的问题是,我应该使用哪种格式(我更喜欢总是有一个Args部分)?或者也许我目前的方法并没有那么糟糕,并且是常见的做法。

其他一些候选者(如果您认为有更好的格式,请随时提供您自己的候选者):

def foo():
    """
    blah blah blah

    Args:

    Returns:
        The number 5
    """
    return 5
Run Code Online (Sandbox Code Playgroud)
def foo():
    """
    blah blah blah

    Args:
        No arguments
    Returns:
        The number 5
    """
    return 5
Run Code Online (Sandbox Code Playgroud)
def foo():
    """
    blah blah blah

    Returns:
        The number 5
    """
    return 5
Run Code Online (Sandbox Code Playgroud)

python documentation docstring google-style-guide

5
推荐指数
1
解决办法
7354
查看次数