代码重复与否?

时间:2014-12-06 10:58:16

标签: linq oop

这是关于类设计和代码重复的另一个问题。

这是场景: 我们有一个名为SupportedFlow的类。 此属性是只读的并返回一个FlowInfo对象列表,每个对象表示一个流(由外部系统发送的物理文件),其中包含一些属性,例如FlowType(表示流类型的对象,例如"客户)流动"或"档案流")。

我们正在构建的系统中的其他一些类需要知道"支持的流类型列表"他们可以通过读取上述对象的SupportedFlow属性并应用一个简单的LINQ查询来获取它:SupportedFlow.Select(p => p.FlowType).ToList()

其他一些类可能需要一个类似的列表,通过LINQ到对象扩展方法在SupportedFlow列表上应用过滤器获得,其中,对于符合任何标准的支持流列表(例如:客户相关的支持流)。

这是我的问题:在这种情况下,最佳设计选择是什么,将新属性添加到原始对象(例如SupportedFlowType或CustomerRelatedSupportedFlows),这些属性将正确的LINQ查询应用于原始属性SupportedFlow,或重复LINQ查询每次在系统的其他类别需要时?

在某种意义上,我猜这是代码执行的一个例子,但同时我不确定通过添加新属性使原始对象复杂化,考虑到这些LINQ查询非常简单,它是最佳选择新的属性不会增加代码库的清晰度。

感谢您的回复。

干杯

1 个答案:

答案 0 :(得分:0)

添加功能确实会使原始对象复杂化,但它仍然比在任何需要的地方重复功能更好。

但是,还有第三种选择:将方法放在util类中。这使原始对象保持简单并防止代码重复。唯一的缺点是,如果需要,你需要“知道”有这样的util类/方法。