PHP コードに例外処理を追加しています。例外処理を行う疎なブロックが大量に発生し、それらの膨大な量によって、実行されている実際の製品コードが隠されているようです。例えば:
function loadProduct($id)
{
$product = new ProductRecord();
try
{
$data = $product->loadFromDatabase($id);
}
catch (\BadFunctionCallException $e)
{
$error = true;
}
return $data;
}
上記の関数の実際のペイロードは、$data を返すことです。例外処理がなければ、2 行の関数になる可能性があります。
function loadProduct($id)
{
$product = new ProductRecord();
return $product->loadFromDatabase($id);
}
これを隠す 1 つの方法はFactory Method
、次のように を使用することです。
function loadProduct($id)
{
$product = new ProductRecord();
$factory = new ProductFactory($product);
return $factory->loadProduct($id); //inside loadProduct I can put try/catch block
}
ここでは、まったく新しい (ファクトリ) クラスと別のコード行を関数に追加して、例外処理を非表示にしています。適切な注意を払えば、これは機能し、見栄えも良いと思います (つまり、コンストラクター内でファクトリを初期化できるため、関数レベルのコードの外に移動できるため、良いオプションになる可能性があります)。しかし、それは最高ですか?
つまり、私の質問は、実際のペイロードをまばらな try/catch ブロックに埋めずに、コードで例外処理を使用するにはどうすればよいかということです。