用更抽象的方法包装实现

Wrapping a implementation in a more abstract method

首先,如果这个问题不清楚,我深表歉意,我不知道更好的表达方式。

所以,我目前正在做一些简单的阅读(Robert C Martin 的 Clean code),我偶然发现了一些我不明白的东西。

这句话出自《极限编程》一书的作者 Ron Jeffries

“经过多年的(编码)工作,在我看来所有程序都是由非常相似的元素组成的。一个例子是 'finding things in a collection',我们经常发现自己想要那个集合中的特定项目,当我发现这种情况发生时,我通常会用更抽象的方法或 class.

来包装实现

Jefferies 突出显示的粗体部分是什么意思

比如说,您有一个方法可以查看对象 X 的集合,returns 一个基于关键字段的方法。

在您的代码的其他地方,您有另一种方法可以查看对象 Y 的集合和 returns 基于关键字段的方法。

为什么不简单地创建一个可以传递对象集合和关键字段的通用助手 class?您将此帮助程序设计为通用且适用于上述两种情况。您现在有了一个有用的实用程序,可以在您的代码中反复使用。

或者,您可以为 Class X 和 Class Y 引入抽象基 class。现在它们都实现了抽象基中定义的 'search' 方法class。搜索调用现在是通用的,可以在整个代码中使用。 在集合中查找 现在在您的代码中是通用的。

目的是识别重复的行为模式并使用通用代码处理它们。

这有几个好处:

  • 代码可读性更强
  • 对分布在整个代码中的行为的更改只需在一个地方完成
  • 代码的使用得到了简化,因为所有常见操作都以类似的方式执行。