将一个大函数重构为一组较小的函数

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 子句中仅列出您在那里期望的错误或错误类别。