【发布时间】:2014-06-06 18:27:38
【问题描述】:
我是一名业余程序员,正在为我大学的一个研究项目编写一些 Python。对于可能在我之后从事此项目的任何人,我需要我的代码非常易读,因此我正在尝试遵循 PEP 8。但是,我遇到了规则冲突。有问题的行是在一长串 for 循环和 if 语句之后的字典定义。问题是约定的行不应该超过 79 个字符,但是续行应该从它们开始的地方缩进。我看到了逻辑上可以完成的三个选项,但不确定什么是最好的。
选项 1:将违规行留得太长
def getIndexedData(directory): |
... |
... |
... |
# construct dictionary of images with peak locations |
peaks[image] = { |
'Xpixel': [float(x) for x in step[17][10][0].text.s|plit(' ')],
'Ypixel': [float(x) for x in step[17][10][1].text.s|plit(' ')]}
return peaks |
选项 2:取消缩进续行
def getIndexedData(directory): |
... |
... |
... |
# construct dictionary of images with peak locations |
peaks[image] = { |
'Xpixel': [float(x) for x in step[17][10][0].text.split(' ')], |
'Ypixel': [float(x) for x in step[17][10][1].text.split(' ')]} |
return peaks |
选项 3:在某处拆分定义(不确定在哪里)
def getIndexedData(directory): |
... |
... |
... |
# construct dictionary of images with peak locations |
peaks[image] = { |
'Xpixel': |
[float(x) for x in step[17][10][0].text.split(' ')],|
'Ypixel': |
[float(x) for x in step[17][10][1].text.split(' ')]}|
return peaks |
我也愿意接受任何其他建议:)
谢谢,
~亚伦
【问题讨论】:
-
有一个代码审查堆栈交换,您可能希望将其发布在此处而不是此处。
-
最好的选择很可能是“4:重构,所以你没有那么多缩进级别”。
-
如果我没记错的话,PEP 8 建议 120 个字符。 80非常非常严格,有人会说过时了。至于你的问题——我会选择第二种选择——但我的意见和任何意见一样好。只做你觉得最好的。这绝对不会使您的代码不可读。其次,请记住 PEP8 只是指导方针 - 有时你有例外......
-
@alfasin:上面写着 79,还有一个附加条件是 100 是可以的,如果你能让整个团队在代码上工作都同意的话。 120 就出来了。
-
您可以标记为版主并请求迁移;对于非模组来说,codereview 还不是一个有效的迁移目标。 (尽管 codereview 可能希望查看更多您的代码,但可能会对其进行审查。)
标签: python coding-style readability pep8