参照から値への変更 (リファクタリング-p183)
リファクタリング
Published: 2018-12-02

目的

「リファクタリング」を理解するためにサンプルコードを PHP で書き換えてみました。

今回は「参照から値への変更」について書きます。

「参照から値への変更」 について

小さくて、不変で、コントロールが煩わしい参照オブジェクトがある。

値オブジェクトは、特に分散並列処理システムで有効です。

変更前

<?php

class Currency
{
    private $_code;

    public function __construct($code)
    {
        $this->_code = $code;
    }

    public function getCode()
    {
        return $this->_code;
    }
}

$r = (new Currency('USD')) === (new Currency('USD'));
var_dump($r);

変更後

<?php

class Currency2
{
    private $_code;

    public function __construct($code)
    {
        $this->_code = $code;
    }

    public function getCode()
    {
        return $this->_code;
    }

    public function equals($arg)
    {
        if (!($arg instanceOf Currency2)) {
            return false;
        }

        $other = $arg;
        return $this->_code === $other->_code;
    }
}

$r = (new Currency2('USD'))->equals(new Currency2('USD'));
var_dump($r);