我开始严格遵守PEP-8,因为我认为在选择和选择我喜欢的东西之前我至少应该尝试一下。
然而,似乎存在冲突。他们强烈建议将每一行限制为79个字符,但他们强烈建议使用方法和变量名称use_underscores_between_words。
在典型的行上,您嵌套在
中class ->
method ->
loop ->
conditional ->
my_var_name += do_some_function(some_parameter, another_parameter)
你已经有79 - 16 = 63个字符可供使用,而你只是在下划线上浪费了6个字符。所以上面的行已经太长了,实际上很短。
如果我不得不经常计算字符,或者将这样的基本线分成几行,那么生产力似乎会受到影响。
我明白,现在它说“如果你的团队同意,使用99”,但似乎这应该是标准,或者说camelCaseVars应该是标准,因为我们非常喜欢短线。
编码符合标准的Python的问题在于,如果不使用神秘的名称或违反行长度或命名约定,我似乎无法编写任何代码。我可以在这里发布我的代码以向您展示我的具体问题,但上面的示例代表了我的代码问题。
哪种理想不那么重要?清楚的名字,短线或using_underscores?
更新:虽然没有人真正提出这个问题,但我觉得使用较少的描述性/功能和变量名称实际上是默认的问题。我知道人们会说“当然不是,只是包裹你的线条”,但在实践中,它似乎是“使用非常短的名字”和“包裹线”的混合,但坚持80。
我认为这就是人们的所作所为,但我认为在商业项目层面,生产力为王,团队刚刚抛弃了这条规则并跃升至120.目前,我认为我只会坚持到79很多(imho)丑陋的线条包裹,并且因为我能够在小型显示器上并排查看2个文件而感到安慰。
答案 0 :(得分:2)
Flat比嵌套好。
因此,考虑通过代码分解来减少代码的嵌套 - 通过将一些部分提取到单独的方法或函数中来减少嵌套代码。而且你的编辑器中总会有足够的水平空间。
<强>更新强>
对于具有条件的嵌套循环,您还可以通过分解来降低嵌套级别。
例如,您可以更改此代码:
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
正如您所看到的,我将一个方法划分为几个简单的操作,并使其更少嵌套。
答案 1 :(得分:1)
您的目标应该是编写易于理解的代码。
一般来说,坚持PEP8可以让您更接近目标。如果您的代码和/或您的团队的性质使得camelcase更好地工作,那么一定要使用camelcase。
话虽这么说,如果你认为保存六个字符是你所认为的典型行是导入的,也许这会告诉你你的典型行嵌套太深,并且有一个比更改命名约定更好的解决方案
答案 2 :(得分:1)
使用下划线,这是每个人都期望的。
- 但是 - 79个字符限制是更容易预留的建议之一。我的团队使用带有119个字符行的pep8,但绝大多数行都不到80个字符。