首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最佳实践:许多小函数/方法,还是具有内联逻辑流程组件的大函数?

最佳实践:许多小函数/方法,还是具有内联逻辑流程组件的大函数?
EN

Stack Overflow用户
提问于 2008-10-30 14:09:57
回答 11查看 14.9K关注 0票数 34

是编写许多小方法(或函数)更好,还是简单地将这些小过程的逻辑/代码直接写到调用小方法的地方?将代码分解成一个小函数,即使暂时只从一个地方调用它,又会怎样呢?

如果一个人的选择依赖于一些标准,那么这些标准是什么?程序员应该如何做出好的判断?

我希望答案可以普遍适用于多种语言,但如果有必要,给出的答案可以特定于一种或几种语言。特别是SQL (函数、规则和存储过程)、Perl、PHP、Javascript和Ruby。

EN

回答 11

Stack Overflow用户

发布于 2008-10-30 14:12:59

我总是把长方法分解成逻辑块,然后试着把它们变成更小的方法。我通常不会将几行代码转换成一个单独的方法,直到我在两个不同的地方需要它,但有时我这样做只是为了提高可读性,或者如果我想单独测试它。

Fowler的Refactoring就是关于这个主题的,我强烈推荐它。

下面是我在重构中使用的一条方便的经验法则。如果有一段代码有注释,我可以将其重新添加到方法名中,将其拉出并使其成为方法。

票数 44
EN

Stack Overflow用户

发布于 2008-10-30 14:20:01

该方法的大小直接链接到它的。

保持方法大小较小(这意味着将一个大方法划分为几个小方法)的主要优点是:

  • 更好的单元测试(由于更显式的堆栈跟踪(而不是一个巨大方法中的一个错误)导致的低圈complexity)
  • better调试)
票数 13
EN

Stack Overflow用户

发布于 2008-10-30 14:14:40

和往常一样,你可以说:视情况而定。这更多的是一个命名和定义方法任务的问题。每个方法应该完成一个(而不是更多)定义良好的任务,并且应该完整地完成它们。方法的名称应指示任务。如果您的方法名为DoAandB(),那么使用单独的方法DoA()和DoB()可能会更好。如果您需要像setupTask、executeTask、FinishTask这样的方法,那么将它们组合起来可能会很有用。

一些要点表明,不同方法的合并可能是有用的:

  • 如果不使用其他方法,则不能单独使用方法。
  • 您必须注意以正确的顺序调用某些依赖方法。

一些要点表明,拆分该方法可能很有用:

  • 现有方法中的一些行有明显的独立task.
  • Unit-testing的大方法出问题。如果为独立的方法编写测试更容易,那么拆分大的方法。

作为对单元测试参数的解释:我写了一个方法,它做了一些事情,包括IO。IO部分很难测试,所以我考虑了一下。我得出的结论是,我的方法做了5个逻辑独立的步骤,其中只有一个涉及IO。所以我将我的方法分成5个较小的方法,其中四个很容易测试。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/250284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档