假设我们有一个类
class foo():
def __init__(self):
self.data = 10
...
def method(self):
...
self.free_indices.append(self.l[self.start_p])
var1 = self.l[self.search(var2[num])].pointer
...很明显,类中的方法和属性调用太长,从而降低了代码的可读性。要解决这个问题,可以创建一对方法
def get_some_att(self, var2, num):
return self.l[self.search(var2[num])].pointer
def append_index(self):
self.free_indices.append(self.l[self.start_p])乍一看,这似乎是合理的,但假设您有一打这样的不同调用,那么您会怎么做?您是否会创建十几个get_some_att方法,从而大幅降低整体执行速度。或者你会愉快地忘记所有提高速度的调用,但在可读性上做出妥协。那么,处理这种困境的真正pythonic式的™方法是什么呢?
发布于 2017-10-01 00:51:12
根据PEP8的说法,在不使用\的情况下换行的首选方法是将语句括在括号中。例如:
class foo():
def __init__(self):
self.data = 10
def method(self):
self.free_indices.append(self.l[self.start_p])
var1 = (
self.l[self.search(var2[num])]
.var3 # you can chain method/attribute calls vertically
)发布于 2017-10-01 01:32:33
无论是使用单个method来执行多个任务,还是将它们拆分成单独的get_some_att和append_index,都取决于您如何设计类/模块。
它不仅关乎可读性,而且还关乎可维护性。此外,为特定任务使用单独的方法不仅可以帮助您在将来需要时访问它们,而且还可以在发生任何异常或需要进一步增强时增强代码。因此,拥有单独的方法(针对每个单独的作业)最终将帮助您追溯异常,并使您可以自由地修改唯一的部分。
所以我会说,在(大型/超大型)项目的长期运行中(确实会随着时间的推移),绝对有必要为每个单独的作业使用单独的方法,以获得更好的可读性、可维护性以及易于调试和修复。
是的,我同意执行时间可能会花费您更多的时间,但值得这样做,因为它将为您节省大量的开发时间,并帮助您在生产环境中轻松跟踪错误。
现在来看pythonic式的代码编写方法,然后我将建议您使用工具pylint或flake8来检查文件的复杂性。
尽管如此,当你知道在不久的将来可能需要其他地方时,为所有单独的任务使用单独的方法是值得的(practising DRY)
https://stackoverflow.com/questions/46504790
复制相似问题