メソッドの抽出 (リファクタリング-p110)
リファクタリング
Published: 2018-10-28

目的

「リファクタリング」を理解するためにサンプルコードを 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);