我应该如何命名这个集合 class?
How should I name this collection class?
想象一下 Collection
的子 class 知道一个 select
块和一个 collect
块。这个 class 的一个实例包装了另一个 collection
并动态地将这些块应用于它。因此,例如,#do:
实现为
do: aBlock
collection
select: [:element | select value: element]
thenDo: [:element | | v |
v := collect value: element.
aBlock value: v]]
所以,问题是我应该如何命名这个 class?我给它起了个名字WrappedCollection
,但是这个名字是有歧义的,而且,这个东西必须已经存在并且有一个名字。
顺便说一下,这与 Subclassing Stream 非常相似,只是我的不是 Stream
。
select
和 collect
块对我来说听起来像是条件标准。因此,也许您可以将 class 命名为 ConditionalCollection
,暗示集合会根据所应用的条件而变化。
我刚才的另一个想法:FilteredCollection
。
我们终于决定使用 DerivedCollection
。鉴于这些对象代表从其他来源获得的集合,就像数学集可以用 intention 而不是 extension 来定义一样,我们选择了一个不'揭示他们的内部代表。
顺便说一句,DerivedCollection
s 特别适用于过滤 (#select:
) 和转换 (#collect:
) 我们用 StoredArray
实例表示的大量数据,一种将其元素存储在磁盘上的 Array
。
想象一下 Collection
的子 class 知道一个 select
块和一个 collect
块。这个 class 的一个实例包装了另一个 collection
并动态地将这些块应用于它。因此,例如,#do:
实现为
do: aBlock
collection
select: [:element | select value: element]
thenDo: [:element | | v |
v := collect value: element.
aBlock value: v]]
所以,问题是我应该如何命名这个 class?我给它起了个名字WrappedCollection
,但是这个名字是有歧义的,而且,这个东西必须已经存在并且有一个名字。
顺便说一下,这与 Subclassing Stream 非常相似,只是我的不是 Stream
。
select
和 collect
块对我来说听起来像是条件标准。因此,也许您可以将 class 命名为 ConditionalCollection
,暗示集合会根据所应用的条件而变化。
我刚才的另一个想法:FilteredCollection
。
我们终于决定使用 DerivedCollection
。鉴于这些对象代表从其他来源获得的集合,就像数学集可以用 intention 而不是 extension 来定义一样,我们选择了一个不'揭示他们的内部代表。
顺便说一句,DerivedCollection
s 特别适用于过滤 (#select:
) 和转换 (#collect:
) 我们用 StoredArray
实例表示的大量数据,一种将其元素存储在磁盘上的 Array
。