一个函数的本体与名称同样清除易懂.在函数调用点插入函数本体,然后移除该函数
示例:
修改前:
/**
* @return int
*/
public function getRating() {
return $this->moreThanFiveLateDeliveries() ? 2 : 1;
}
/**
* @return bool
*/
public function moreThanFiveLateDeliveries() {
return $this->numberOfLateDeliveries > 5;
}
修改后:
/**
* @return int
*/
public function getRating() {
return $this->numberOfLateDeliveries > 5 ? 2 : 1;
}
动机
- 简短的函数表现动作意图, 这样会是代码更清晰易读. 但有时候会遇到某系函数,其内部代码和函数名称同样清晰易读,也可能重构了该函数,使其内容和其名称同样清晰.果真如此你应该去掉这个函数.直接使用其中的代码.
- 另一种需要使用内联函数的情况是:代码中有很多不合理的函数,你可以将他们都内联到一个大型函数中, 在从中组织合理的小型函数.你可以吧所要的函数(有着你要的行为)的所有调用对象的函数内容都内联到函数对象中.比起既要移动一个函数,又要逸动它所调用的其他所有函数,将整个大型函数作为整体来移动会比较简单.
- 使用了太多的间接层,使得系统中的所有函数似乎都是对另一个函数的简单委托.造成在这些委托动作之间晕头转向,那么通常都会使用Inline Method. 当然 间接层有其价值,但不是所有的间接层都有价值.试着使用内联手法,移除那些无用的间接层.
做法
- 检查函数, 确定它不具多态性
- 找出这个函数的所有被调用点都替换为函数本体
- 测试,删除该函数的定义
网友评论