我有以下非常相似的代码的简单方法,我喜欢提取常见的位,但如果它增加了方法的复杂性,有人可以给我一个例子,甚至链接如何实现这一点?
这里有两个例子:
public function findRecipeById($id)
{
$query = "SELECT * FROM assets WHERE asset_type = 'recipe' AND asset_id = $id";
...fetch query data ...
}
public function findArticleById($id)
{
$query = "SELECT * FROM assets WHERE asset_type = 'article' AND asset_id = $id";
...fetch query data ...
}
如您所见,这两个只是说明我的问题的一些非常简单的方法,它们具有几乎相同的查询字符串,我能想到的唯一选择是将它们转换为以下方法:
public function findAssetById($assetType, $assetId)
{
$query = "SELECT * FROM assets WHERE asset_type = '".$assetType."' AND asset_id = $id";
...fetch query data ...
}
所以我看到的问题是,我现在减少了代码重复,将2个方法减少到1个,但同时我也通过引入更多参数创建了一个复杂度高于所需的方法。
此处未说明的一些关键事项:
1)查询可能更大,并且
2) 添加更多参数后,重构方法的复杂性可能会更高。
我对专家的问题是,在这种情况下是否有更好的方法来减少代码重复而不引入复杂性?还是将其保留为 2 个更简单的方法会更好?
谢谢!