这些类似的方法能否重构为单一的方法?

Can these similar methods be refactored to a single method?

我的编码技能介于新手和专家之间。和每个人一样,我一直在努力学习更简单有效地编码。 DRY(不要重复自己)原则推动了这个问题。我读了很多 SO posts,但真的无法收集到引起共鸣的答案。

该应用程序有 3 层:UI、域、存储。存储层有一个 class 作为服务将程序数据保存到 SQL 服务器。有多个 class 有点相似但不完全相似。 classes 像这样级联:

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

这些 classes 的 CRUD 方法看起来很相似,这让我想知道它们是否符合 DRY 原则的标准。下面是 3 个 classes 的更新方法(实际上总共有 5 个 classes 使用相同类型的方法):

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 个 classes,这是很多非常相似的代码。

这里有几个隐含的问题。

1) 是否有可能重构这些有些相似的方法?以我的编码水平,我不明白它是如何完成的,因为上面每个方法中的代码都在用不同的 classes 进行不同的调用;但我不是专家编码员,这就是我问的原因。

2) 鉴于这些方法很短,重构是否有意义?从其他 SO posts 可以清楚地看出,有时重构没有意义,因为当重复代码如此简单时需要权衡工作量。

3) 但即使它没有意义,如果可以重构这样的代码,那将如何完成?如果这是我需要学习的东西,请指点我正确的方向。

虽然这是 vb.net,但这些语言看起来非常相似,因此建议的 C# 标记很有意义。我还想知道这个 post 是否适合 SO 因为它更通用,或者我是否应该 post 它在 codereview.stackexchange.

使用通用代码创建基础 class(例如 Person)。然后,您的其他每个 classes 都会执行此操作。注意 VB 不进行多重继承。