読者です 読者をやめる 読者になる 読者になる

カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

連続する二つの処理はファイルを分けるべきか否か

プログラミング プログラミング-PHP

Aを作ったのち、Aのデータ(IDなど)を使ってBを生成するコマンドがあったとする。

そのとき、 create_a_command.phpcreate_b_command.php という二つのファイルを作るべきか、 create_a_and_b_command.php というのを作るべきかという問題。

このとき、サービスクラスはAとBで分けるでいいと思うのです。こんな感じ。

a_service.php

class AService
{
    protected id;

    public function getId()
    {
        return $this->id;
    }

    public function setId($id)
    {
        $this->id = $id;
    }

    public function create()
    {
        $data->create();
    }
}

b_service.php

class BService
{
    protected $a_id;
    public function __construct($a_id)
    {
        $this->a_id = $a_id;
    }

    public function create()
    {
        $data->create($this->a_id);
    }
}

で、commandのほうをどうするか。

分ける場合

create_a_command.php

class CreateACommand
{
    $a_service = new AService();
    $a_service->create();
}

create_b_command.php

class CreateBCommand
{
    $a_service = new AService();
    $a_id = $a_service->getId();

    $b_service = new BService($a_id);
    $b_service->create();
}

そんで、コマンド実行時、&&を使う。

$ php create_a_command.php && php create_b_command.php

一つにする場合

create_a_and_b_command.php

class CreateAAndBCommand
{

    $a_service = new AService();
    $a_sercive->create();

    $a_id  = $a_service->getId();

    $b_service = new BService($a_id);
    $b_service->create();
}

んで、コマンド実行時は普通に実行する。

$ php create_and_b_command.php

こっちのほうがまとまってるということを伝えられるからこっちのほうがいい気はする。

ただ、cも作ることになったらファイル名がヤバイので、ファイル名は変えてもいいかもしれない。

終わりに

こういう普段悩みそうな設計って、参考書とかない気がするしなー。悩むほどでもないのかなー。

ご意見あれば是非是非!宜しくお願いします!ではでは!