将一个大函数重构为一组较小的函数
Refactoring a huge function into a set of smaller functions
在代码简洁方面,嵌套了for循环、if-else语句和while循环的函数应该如何重构?对于像这样的大函数,理想的、干净的结构是什么?将这样的函数分解为嵌套函数是否可以接受?
def main():
try:
for
if
for
while
for
for
if
for
if
else
if
else
if
except:
if __name__ == "__main__":
main()
主要是意见为主,还要看代码本身。一个好的经验法则是每个函数都需要有一个合乎逻辑的目的。
如果确实需要,只在循环内部嵌套循环,否则避免嵌套它们(出于算法性能原因)。
使用 Omri 答案建议来识别您正在执行的每个步骤,为每个步骤指定一个清晰的名称并将该步骤提取到它自己的函数中(您调用它来执行原始函数中的步骤)。
这与嵌套函数不同,出于不同的原因而做的事情。
您只是在调用放置在其他地方(未嵌套在您的函数中)的辅助函数。
不要在 try 块中包围所有内容,避免 catch 全部为空 except:
。仅包围可能导致麻烦的特定(或少数语句),并特定于在 expect 子句中仅列出您在那里期望的错误或错误类别。
在代码简洁方面,嵌套了for循环、if-else语句和while循环的函数应该如何重构?对于像这样的大函数,理想的、干净的结构是什么?将这样的函数分解为嵌套函数是否可以接受?
def main():
try:
for
if
for
while
for
for
if
for
if
else
if
else
if
except:
if __name__ == "__main__":
main()
主要是意见为主,还要看代码本身。一个好的经验法则是每个函数都需要有一个合乎逻辑的目的。
如果确实需要,只在循环内部嵌套循环,否则避免嵌套它们(出于算法性能原因)。
使用 Omri 答案建议来识别您正在执行的每个步骤,为每个步骤指定一个清晰的名称并将该步骤提取到它自己的函数中(您调用它来执行原始函数中的步骤)。
这与嵌套函数不同,出于不同的原因而做的事情。 您只是在调用放置在其他地方(未嵌套在您的函数中)的辅助函数。
不要在 try 块中包围所有内容,避免 catch 全部为空 except:
。仅包围可能导致麻烦的特定(或少数语句),并特定于在 expect 子句中仅列出您在那里期望的错误或错误类别。