提炼函数
重构动机
当看见一个过长的函数或者一段需要注释才能让人理解用途的代码时,将这段代码放进一个独立的函数,并且将函数用途(不是函数实现手法)声明为函数名称。
重构前
<?php
namespace app\controller;
class Index
{
// 打印有颜色的 span
public function printColoredSpan($color)
{
$color_span = '';
if ($color == 'green') {
$color_span = '<span style="color:green"></span>';
} elseif ($color == 'red') {
$color_span = '<span style="color:red"></span>';
} elseif ($color == 'black') {
$color_span = '<span style="color:black"></span>';
}
dump($color_span);
}
}
重构后
<?php
namespace app\controller;
class Index
{
// 打印有颜色的 span
public function printColoredSpan($color)
{
$color_span = $this->getColoredSpan($color);
dump($color_span);
}
// 获取有颜色的 span
public function getColoredSpan($color)
{
$color_span = [
'green' => '<span style="color:green"></span>',
'red' => '<span style="color:red"></span>',
'black' => '<span style="color:black"></span>',
];
return $color_span[$color];
}
}