重构与模式》笔记:Composed Mthod

来源:互联网 发布:淘宝美工外包 编辑:程序博客网 时间:2024/06/06 14:28

原文:http://wangchen.info/Refactoring-to-Patterns-Composed-Method/

Composed Method(组合方法)是一个很小、很简单的方法,它的逻辑很快就能理解。
一旦代码中有了很多Composed Method,它就会变得易于使用、理解和扩展。

Composed Method由对其他方法的调用组成。好的Composed Method的代码都在细节的同一个层面上 。例如,下面函数中前两行和第三行代码就不在细节的同一个层面上:

1
2
3
4
5
private void paint(Graphics g) {
image=exp.getImage();
g.drawImage(image, 0, 0);
paintText(g);
}

在应用Composed Method进行重构之后,paint()中调用的所有方法就在细节的同一层面上了:

1
2
3
4
5
6
7
8
private void paint(Graphics g) {
paintImage(g);
paintText(g);
}
private void paintImage(Graphics g) {
image=exp.getImage();
g.drawImage(image, 0, 0);
}

绝大多数实现Composed Method的重构都涉及多次应用函数提炼 ,直到这个Composed Method通过调用其他方法完成自己大部分的工作。

一旦完成了这个重构,很可能会拥有大量很小的、私有的方法,它们将被Composed Method调用。有些人可能会认为使用这么多、这么小的方法将产生性能问题,实则不然,性能问题几乎总是由其他问题引起的。

如果在同一个类中很多方法上都应用了这一重构方法,则这个类可能充斥大量很小的方法,在这种情况下可能需要应用 提炼类 方法来进一步重构。

优点与缺点

  • :) 清晰的描述了一个方法所实现的功能以及如何实现
  • :) 把方法分解成命名良好的、处在细节同一层面上的行为模块,以此来简化方法
  • :( 可能会产生过多的小方法
  • :( 可能会使调试变得困难,因为程序的逻辑分散在许多小方法中

指导原则(摘选两条)

  • Composed Method都很小。代码很少超过10行,一般在5行左右
  • 保证在细节的同一层面
0 0
原创粉丝点击