Python 我应该使用camelCase来遵守pep-8线路长度吗?
我已经开始严格遵循PEP-8,因为我认为我至少应该在挑选我喜欢的东西之前尝试一下 然而,似乎存在冲突。他们强烈建议将每行限制为79个字符,但他们强烈建议方法和变量名在单词之间使用下划线 在一个典型的行中,您嵌套在Python 我应该使用camelCase来遵守pep-8线路长度吗?,python,Python,我已经开始严格遵循PEP-8,因为我认为我至少应该在挑选我喜欢的东西之前尝试一下 然而,似乎存在冲突。他们强烈建议将每行限制为79个字符,但他们强烈建议方法和变量名在单词之间使用下划线 在一个典型的行中,您嵌套在 class -> method -> loop -> conditional -> my_var_name += do_some_function(some_paramete
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:)也许这个问题更适合你,因为它实际上并不涉及特定的代码,而是涉及编程原理和编码技术。从网站的“关于”页面:“程序