Python 我应该使用camelCase来遵守pep-8线路长度吗?

Python 我应该使用camelCase来遵守pep-8线路长度吗?,python,Python,我已经开始严格遵循PEP-8,因为我认为我至少应该在挑选我喜欢的东西之前尝试一下 然而,似乎存在冲突。他们强烈建议将每行限制为79个字符,但他们强烈建议方法和变量名在单词之间使用下划线 在一个典型的行中,您嵌套在 class -> method -> loop -> conditional -> my_var_name += do_some_function(some_paramete

我已经开始严格遵循PEP-8,因为我认为我至少应该在挑选我喜欢的东西之前尝试一下

然而,似乎存在冲突。他们强烈建议将每行限制为79个字符,但他们强烈建议方法和变量名在单词之间使用下划线

在一个典型的行中,您嵌套在

class -> 
    method -> 
        loop -> 
            conditional -> 
                my_var_name += do_some_function(some_parameter, another_parameter)
您已经有79-16=63个字符要处理,而您只在下划线上浪费了6个字符。所以上面这条线已经太长了,实际上很短

如果我不得不经常数数字符,或者像这样把一行简陋的字分成几行,那么工作效率就会下降

我知道现在它说“如果你的团队同意,使用99”,但似乎这应该是标准,或者更确切地说,camelCaseVars应该是标准,因为我们非常喜欢短线

我在编写符合标准的Python代码时遇到的问题是,如果不使用神秘的名称,或者违反行长或命名约定,我似乎无法编写任何代码。我可以在这里发布我的代码,向您展示我的具体问题,但上面的示例代表了我在代码中遇到的问题

哪个理想不那么重要?清除名称、短线或使用下划线

更新:虽然实际上没有人建议这样做,但我感觉到,使用较少的描述性/函数名和变量名实际上是默认要求我的。我知道人们会说“当然不是,只是把你的台词包起来”,但实际上,这似乎是“使用很短的名字”和“把台词包起来”的混合体,但坚持使用80


我认为这就是人们所做的,但我认为在商业项目层面,生产力是第一位的,团队刚刚抛弃了这条规则,跃升到120。现在,我想我会坚持使用79,使用很多(imho)难看的换行符,一想到我可以在一个小显示器上并排查看2个文件,我就感到很舒服。

你的目标应该是编写易于理解的代码

一般来说,遵守PEP8会让你离目标更近一步。如果您的代码和/或团队的性质使得camelcase工作得更好,请务必使用camelcase


也就是说,如果您认为为您认为是典型的行保存六个字符很重要,那么这可能是在告诉您典型的行嵌套太深,有一个比更改命名约定更好的解决方案。

您的目标应该是编写易于理解的代码

一般来说,遵守PEP8会让你离目标更近一步。如果您的代码和/或团队的性质使得camelcase工作得更好,请务必使用camelcase


也就是说,如果您认为为您认为是典型的行保存六个字符很重要,那么这可能是在告诉您,典型的行嵌套太深了,有一个比更改命名约定更好的解决方案。

使用下划线,这是每个人的期望


-然而,79个字符的限制是一个更容易搁置的建议。我的团队使用的pep8有119个字符行,但我们的绝大多数行都不超过80个字符。

使用下划线,这是每个人都期望的

-然而,79个字符的限制是一个更容易搁置的建议。我的团队使用的pep8有119个字符行,但我们的绝大多数行都在80个字符以下。

说:

平的比嵌套的好

因此考虑通过代码分解来减少代码的嵌套-通过将某些部分提取到单独的方法或函数中来减少代码嵌套。在编辑器中始终有足够的水平空间

更新

对于具有条件的嵌套循环,还可以通过分解降低嵌套级别

例如,您可以更改此代码:

class MyClass(BaseClass):

    def my_method():
        for item in self.my_collection:
            if item.numeric_property % 2:
                self.my_property = item.other_property + item.age * self.my_coefficient
        self.do_other_stuff()
对于这一点:

class MyClass(BaseClass):

    def my_method():
        """People see what happen because of clear names"""
        self.process_my_collection()
        self.do_other_stuff()

    def process_my_collection():
        """People see what happen because of clear names.
        They probably don't even need to read your math from
        process_my_collection_item(item) at all.
        And you make the code more flat as well.
        """
        for item in self.my_collection:
            self.process_my_collection_item(item)

    def process_my_collection_item(item):
        """The most people don't need to read these calculations every time
        since they just know it's working and tested
        but they'd like to work with methods above frequently:
        """
        if not item.numeric_property % 2:
            return
        self.my_property = item.other_property + item.age * self.my_coefficient
如您所见,我将一个方法划分为几个简单的操作,并减少了嵌套。

说:

平的比嵌套的好

因此考虑通过代码分解来减少代码的嵌套-通过将某些部分提取到单独的方法或函数中来减少代码嵌套。在编辑器中始终有足够的水平空间

更新

对于具有条件的嵌套循环,还可以通过分解降低嵌套级别

例如,您可以更改此代码:

class MyClass(BaseClass):

    def my_method():
        for item in self.my_collection:
            if item.numeric_property % 2:
                self.my_property = item.other_property + item.age * self.my_coefficient
        self.do_other_stuff()
对于这一点:

class MyClass(BaseClass):

    def my_method():
        """People see what happen because of clear names"""
        self.process_my_collection()
        self.do_other_stuff()

    def process_my_collection():
        """People see what happen because of clear names.
        They probably don't even need to read your math from
        process_my_collection_item(item) at all.
        And you make the code more flat as well.
        """
        for item in self.my_collection:
            self.process_my_collection_item(item)

    def process_my_collection_item(item):
        """The most people don't need to read these calculations every time
        since they just know it's working and tested
        but they'd like to work with methods above frequently:
        """
        if not item.numeric_property % 2:
            return
        self.my_property = item.other_property + item.age * self.my_coefficient

正如您所见,我将一个方法划分为几个简单的操作,并减少了嵌套。

也许这个问题更适合,因为它实际上不涉及特定的代码,而是涉及编程原理和编码技术。从网站的about页面:
“程序员Stack Exchange是一个问答网站,面向对软件开发概念性问题感兴趣的专业程序员。”
。我觉得你的角色绝对是一个概念性的问题。我不认为6个角色是一个问题。大多数情况下,使用camel case并不能使线条合适,因此您必须拆分线条。我真的看不出有什么问题。为什么在多行上拆分函数调用是不可取的?我有时会和自己争论如何优雅而惯用地拆分,但我基本上不需要超出第80栏。@Lix哦,很公平。我不是在追求哲学或偏袒任何一方,我只是在实际编写我的代码行之后。但是你可能是对的。@AwokeKnowing-我并不是说这个问题对你有害-只是为了让你能从程序员身上得到一些更好的答案。SE:)也许这个问题更适合你,因为它实际上并不涉及特定的代码,而是涉及编程原理和编码技术。从网站的“关于”页面:
“程序