我正在重构一个相当大的项目,我有兴趣寻找和减少代码克隆,以实现更好的标准化和易于开发。
我有一个代码片段不断出现在“精确匹配”中(使用 Visual Studio 2012 的“查找代码克隆”功能)。
这里是:
End If
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Using
Return Nothing
基本上,我有一大堆类似的功能(结构类似,但实际功能不同),它们都以这样的方式打开:
Const sql As String = ...
Using cn As SqlConnection...
Using cmd As SqlCommand(sql,cn)
... Maybe add some SqlParameters
cn.Open()
... Something with cmd.Execute...
现在,我认识到第一个代码块在很多很多方法中都是相同的,但是我想不出一种方法来提取该代码,编写一次并在每次需要该功能时简单地调用它。在我看来,发生了太多的控制流。
所以,我不知道如何解决这个问题(我只是假设我可以“解决”这个问题,因为微软已将其标识为“克隆代码”)。
我正在考虑制作少量函数来做相同类型的事情(比如从表中返回一个计数,返回一个最高值等......),并且只有 SQL 真正不同被执行。不过,这可能有点棘手,因为有时参数(类型和数量)会有所不同。
有什么想法吗?