【发布时间】:2015-06-11 04:49:32
【问题描述】:
我有以下非常相似的代码的简单方法,我喜欢提取常见的位,但如果它增加了方法的复杂性,有人可以给我一个例子,甚至链接如何实现这一点?
这里有两个例子:
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 个更简单的方法更好?
谢谢!
【问题讨论】:
-
看起来这样更主观?
标签: refactoring dry code-complexity