連続する二つの処理はファイルを分けるべきか否か
Aを作ったのち、Aのデータ(IDなど)を使ってBを生成するコマンドがあったとする。
そのとき、 create_a_command.php
と create_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も作ることになったらファイル名がヤバイので、ファイル名は変えてもいいかもしれない。
終わりに
こういう普段悩みそうな設計って、参考書とかない気がするしなー。悩むほどでもないのかなー。
ご意見あれば是非是非!宜しくお願いします!ではでは!
NECラーニング株式会社 内山 祥恵,NECラーニング株式会社 棚橋 英之,株式会社マルチメディアスクール・ウェーヴ インプレスジャパン 2012-09-14