我已经开始严格遵循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)线包装,并感到安慰的想法,我可以看到两个文件并排在一个小显示器上。
发布于 2014-07-22 18:18:39
Python禅宗说:
平比嵌套好。
因此,考虑通过代码分解减少代码嵌套--通过将部分提取成单独的方法或函数来减少代码嵌套。你的编辑器里总是有足够的水平空间。
更新
对于具有条件的嵌套循环,还可以通过分解降低嵌套级别。
例如,您可以更改以下代码:
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如您所见,我将一个方法划分为几个简单的操作,使其更少嵌套。
发布于 2014-07-22 18:17:34
您的目标应该是编写易于理解的代码。
一般来说,坚持PEP8可以让你离这个目标更近一步。如果您的代码和/或团队的性质使camelcase工作得更好,那么一定要使用camelcase。
话虽如此,如果您认为保存6个字符是非常重要的,因为您所感知的是一条典型的行,这也许是告诉您,您的典型行嵌套得太深了,而且有一个比更改命名约定更好的解决方案。
发布于 2014-07-22 18:17:45
使用下划线,这是每个人都期望的。
-不过,79字限制是较容易搁置的建议之一。我的团队使用pep8和119个字符行,但我们的绝大多数行都在80个字符以下。
https://stackoverflow.com/questions/24894708
复制相似问题