我有两个项目的解决方案,每个都生成另一个Windows应用程序使用的单独的dll。每个这些项目有一个称为MyActions只有一个方法,像这样以正确的方式做DRY事情
PROJECT1
public class MyActions
{
public SomeTypeA DoJob(string str1, string str2)
{
}
}
项目2
public class MyActions
{
public SomeTypeB DoJob(string str1)
{
}
}
两个返回类型,这两个类是作为类低于
public class SomeTypeA
{
public string stringA { get; set; }
public int someInt { get; set; }
}
public class SomeTypeB
{
public string someStringA { get; set; }
}
在这些单个项目的两个类中,DoJob的方法几乎有80%的代码是相同的。 Project1是其MyActions
类的DoJob
方法有一些特定于仅Project1的额外位的人。 现在这里是扭曲的.. Project1最终将被废弃,其DLL将不再使用。我想以最好的方式编写代码,以确保没有重复的代码,所以我不必进行任何修改以删除Project1中止后Project2中任何不需要的代码。
我想使用继承和重写DoJob方法。如果它们的返回类型不同并且它们具有不同的输入参数,它将如何工作?也许将Project1的MyActions类中的参数之一推送到其构造函数?我也想在Project1中添加一个Project2的MyActions类的链接。但不知道如何继续实施,而不是重复自己,或者以后可能遇到无法预料的问题。任何提示,建议?
如果这些方法接受不同的参数,并返回不同的类型,那么我觉得它们是不同的。你有更真实的例子吗?这些类如何在逻辑上相关? – Matthew
这里有X行代码,它们完全相同。在这两个类的方法中,行都是直线.Project1的X + 5%多于只针对Project1的行。这两个类都在同一类型的文档上工作,并对其执行相同的操作...除Project1外,其他一些作业更多。它的那些准确重复代码的X行使我困扰。 – user20358
@ user20358你可以将这些代码块移动到单独的工具类吗?什么'MyDocumentFinder'或'MyDocumentWriter'(很难说具体是什么),并将关键信息传递给那些目的是做一个小单元任务的方法/对象? –