名称:Extract Method(提炼函数)
概述:有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。
void printOwing(double amout)
{
printBanner();
//print details
System.out.println("name: " + _name);
System.out.println("amount" + amount);
}
void printOwing(double amount)
{
printBanner();
printDetails(amount);
}
void printDetails(double amount)
{
System.out.println("name: " + _name);
System.out.println("amount" + amount);
}
动机:当看见一个过长的函数火着一段需要注释才能让人明白的代码时,可以用Extract Method来进行重构。
这样做有三个好处:
-
每个函数的粒度小,容易被重用
-
使高层函数读起来像一系列注释
-
如果函数都是细粒度,那函数的覆写也会更容易
做法:
- 创造一个新函数,根据函数的意图来对它命名(以函数“做什么”命名,而不是“怎样做”命名)。只要新函数的名称能够以更好的方式说明代码的意图,你就应该提炼,如果想不到好名称,就别动了
- 将提炼出的代码从源函数复制到新建的目标函数