我的编码技巧介于新手和专家之间。和大家一样,我总是试图学习更简单有效的编码。 DRY(不要重复自己)原则正在推动这个问题。我读过很多SO帖子,真的无法收集到引起共鸣的答案。
该应用程序有3层:UI,域,存储。存储层有一个类,用作将程序数据保存到SQL Server的服务。有多个类有些相似但不完全相似。这些类级联如下:
Class Parent
:
Public Property Children as New List(Of ParentChild)
End Class
Class ParentChild
:
Public Property Children as New List(Of ParentGrandChild)
End Class
Class ParentGrandChild
:
End Class
这些类的CRUD方法看起来很相似,这让我想知道它们是否符合DRY原则的标准。以下是3个类的Update方法(实际上总共有5个类使用这种类型的方法):
Public Overrides Sub ParentUpdate(Parent As Parent)
Dim thisSqlParent = SqlContext.SqlParents.Find(Parent.ID)
thisSqlParent.DomainToSqlParent(Parent)
SqlContext.SaveChanges()
End Sub
Public Overrides Sub ChildUpdate(ParentChild As ParentChild)
Dim thisSqlChild = SqlContext.SqlChildren.Find(ParentChild.ID)
thisSqlChild.DomainToSqlChild(ParentChild)
SqlContext.SaveChanges()
End Sub
Public Overrides Sub GrandchildUpdate(Grandchild As ParentGrandchild)
Dim thisSqlGrandchild = SqlContext.SqlActivities.Find(Grandchild.ID)
thisSqlGrandchild.DomainToSqlGrandchild(Grandchild)
SqlContext.SaveChanges()
End Sub
鉴于有4种CRUD方法,我有5个类,这是很多非常相似的代码。
这里有几个隐含的问题。
1)甚至可以重构这些有些类似的方法?在我的编码技能水平上,我不明白它是如何完成的,因为上面每种方法中的代码都是用不同的类进行不同的调用;但是我不是一个专家编码器,这就是我要问的原因。
2)鉴于这些方法太短,重构是否有意义?从其他SO帖子中可以清楚地看出,有时重构是没有意义的,因为重复代码如此简单时需要权衡。
3)但即使它没有意义,如果有可能重构这样的代码,那会怎么做?如果我需要继续学习,请指出正确的方向。
虽然这是vb.net,但语言似乎足够相似,建议的C#标签才有意义。我也想知道这篇文章是否适合SO,因为它更通用,或者我应该将它发布在codereview.stackexchange上。
答案 0 :(得分:0)
使用公共代码创建基类(例如Person
)。然后,您的每个其他类都会实现此功能。注意到VB不进行多重继承。