你怎么找到重复的方法?

时间:2010-12-02 03:27:45

标签: c# visual-studio-2010 .net-4.0

如果不检查每种方法,如何在类中找到重复的方法?重复方法被定义为方法体内的相同代码,并且可能但不保证具有相同的方法签名。

我正在清理,重新设计和重构一些项目。我有一个想法是将所有实用程序方法复制到一个类中,找到重复项,删除它们,然后继续下一个任务。我不想单独查看每个方法来查找重复项。

编辑1:为了清楚起见,重复的方法是相同的代码。复制的结果&粘贴。这不是要找到重复的功能,即具有不同名称和不同方法结构的变量名称的方法。

3 个答案:

答案 0 :(得分:3)

有些工具会尝试自动查找重复的代码(在同一个类中,或在整个项目中),同时允许对不影响整体的次要编辑(例如,变量重命名,更改常量等)方法的行为。

可在Duplicate code (Wikipedia)找到一个简短列表。

答案 1 :(得分:1)

我会使用相似性分析器,如Simian(http://www.redhillconsulting.com.au/products/simian/)。是的,它是一种商业产品,但与自己开发产品的成本相比便宜。它将找到复制/粘贴的代码,而不一定是方法边界。如果有人复制/粘贴相同的foreach循环十几次,它也会发现。

N.B。我不会以任何方式受雇或与Simian的制造商RedHill Consulting有关。我过去刚刚使用过它们的产品,因此我想起了它。

答案 2 :(得分:0)

  

重复的方法被定义为方法体内的相同代码

我不认为,有一些智能工具可以完成这项工作,你需要手动做或者编写一个程序,可以识别用不同方法编写的相同逻辑

  

可能但不保证,相同的方法签名

具有不同方法名称的相同方法签名是可能的,但C#编译器不允许使用相同签名的相同方法名称

最佳方法是制定代码指南和代码审核。