我应该何时将代码块提取到私有方法

时间:2012-11-07 16:26:31

标签: oop

当我编写方法时,我尝试将该方法中的代码块提取到私有方法。

例如,如果我需要转换其中一个输入参数,我创建一个接受参数值并返回转换值的私有方法。我从'main'方法的主体调用这个私有方法 - 实质上我试图封装私有方法中的转换操作,并适当地命名方法。

我真的在寻找人们是否认为这种一般方法是个好主意的答案。我得到了其他开发人员的反馈,其中一些开发人员倾向于将所有代码保留在一个方法中。我认为小型私有方法封装了这些单个任务,他们认为如果代码保存在一个方法中,则类保持清洁。

从社区获得一些答案会很好,您认为哪种方法可以更好地设计或更符合OOP原则。

3 个答案:

答案 0 :(得分:1)

简而言之,这通常是一个好主意。

有关详细信息,请查看Neal Ford撰写的来自DeveloperWorks的Composed Method文章。在本文中,Neal说明了如何重构私有方法,从而隔离适合重用的代码区域。

  

这项练习的真正重要好处是能力   收获可重复使用的代码。当您查看清单1中的代码时,您就可以了   看不到可重复使用的资产;你只看到一堆代码。通过拉动   除了olio方法,我发现了可重复使用的资产。但优点是   超越重用。我还为一个简单的框架创建了基础   处理我的应用程序中的持久性。什么时候创建   从数据库中获取某个实体的另一个简单边界类,   我已经有代码来帮助我做到这一点。这是本质   提取框架而不是在象牙塔中建造它们。

答案 1 :(得分:1)

我通常也会这样做有很多原因:

  • 有助于重复使用。
  • 它使方法有一个单一的责任。这反过来又使他们很容易沟通他们的目的。我认为SRP不仅适用于类,也适用于方法。
  • 它使方法易于阅读和理解。我的方法一般不超过6或7行。
  • 以后可以很容易地重构它们(例如,如果您需要将某些行为分离到另一个对象中,这在系统发展时非常常见)。

作为一般的经验法则,我使用必须在方法体中添加注释来解释正在发生的事情是一种气味并且意味着它可以被重构为更小的部分。

HTH

答案 2 :(得分:0)

一般来说,你应该在更多的地方加入你需要的方法代码(为了不重复自己)。

如果方法很长,将代码放入其他方法也是有意义的,那么将它拆分成许多方法是有意义的。