目的
「リファクタリング」を理解するためにサンプルコードを PHP で書き換えてみました。
今回は「メソッドの抽出」について書きます。
「メソッドの抽出」 について
どんな処理をするかではなく、何をするかによって命名する
私はメソッドが返す値は1つにする方がよいと思うので、複数のメソッドを準備して、さまざまな値に対応することを試みます。
例
変更前
class Sample
{
private $_name;
public function __construct($_name)
{
$this->_name = $_name;
}
public function printOwing($amount)
{
$this->printBanner();
// 明細の表示
echo('name: ' . $this->_name . "\n");
echo('amount: ' . $amount . "\n");
}
public function printBanner()
{
echo 'call' . __FUNCTION__;
}
}
// 呼び出し
$obj = new Sample('MyName');
$obj->printOwing(2000);
変更後
class SampleNew
{
private $_name;
public function __construct($_name)
{
$this->_name = $_name;
}
public function printOwing($amount)
{
$this->printBanner();
$this->printDetails($amount);
}
// 明細の表示
public function printDetails($amount)
{
echo('name: ' . $this->_name . "\n");
echo('amount: ' . $amount . "\n");
}
public function printBanner()
{
echo 'call' . __FUNCTION__;
}
}
// 呼び出し
$obj_new = new SampleNew('MyName');
$obj_new->printOwing(4000);