什么时候应该打破一个功能?

Xol*_*lve 7 refactoring

它谨慎地将长函数分解为主函数和辅助函数.

我知道模块外部只会调用主要功能,但它的长度可能会被证明是令人生畏的.

教科书限制了行数,但我觉得这太严格了.

PS我用Python编程,需要处理传入的消息.该函数返回一个包含消息的元组,但是在Python的内部数据类型中.因此,您可以看到每种消息类型的独立代码.

重复的问题

什么时候功能太长了?

Pau*_*lin 5

我不太喜欢将一个函数不必要地分解为多个函数。这不是一件一成不变的事情——如果有些东西看起来像是不同的逻辑单元,那么无论如何,要把它们分开并单独考虑它们。但是,不要仅仅为了“每个函数一页”或“每个函数 N 行”之类的指导方针而将事情分解。


cdo*_*ner 4

我认为你需要从问题的另一端来解决这个问题。自下而上思考。确定尽可能小的小工作单元,然后开始以这种方式编写代码。只有当您自上而下编码并且不采用结构化方法时,您才会遇到意大利面条式代码问题。

如果您已经有了意大利面条式代码并且需要重构,那么您几乎必须重新开始。分解现有的意大利面条式代码可能比重写它需要更多的工作,而且结果可能不会那么好。

我认为方法中的代码行数也不应该有一个硬性数字,但是编写良好的代码不会有底层超过 5 到 10 行、业务逻辑超过 20 到 30 行的方法。给你某种衡量标准。