目的
「リファクタリング」を理解するためにサンプルコードを PHP で書き換えてみました。
今回は「明示的なメソッド群による引数の置き換え」について書きます。
「明示的なメソッド群による引数の置き換え」 について
引数の特定の値によって異なるコードが実行されるメソッドがある。
引数の値に対応する別々のメソッドを作成する
例
変更前
<?php
class Engineer extends Employee
{
public function __consturct() {}
}
class Employee
{
const ENGINEER = 0;
const SALESMAN = 1;
const MANAGER = 2;
public static function create($type)
{
switch ($type) {
case self::ENGINEER:
return new Engineer();
case self::SALESMAN:
return new Salesman();
case self::MANAGER:
return new Manager();
}
throw new Exception('不正なタイプコード');
}
}
$e = Employee::create(0);
echo get_class($e) . "\n";
変更後
<?php
class Employee2
{
const ENGINEER = 0;
const SALESMAN = 1;
const MANAGER = 2;
public static function createEngineer()
{
return new Engineer();
}
}
$e = Employee2::createEngineer();
echo get_class($e) . "\n";