2011-04-14 71 views
0

我必须验证一些我还不知道的东西的数据。我想在函数参数中提供一些占位符来支持这些对象。在函数参数中挂钩以适应未来数据?

当前

Execute(start_time, end_time, DataSet, some_other_data_hook) 

目前,我已经实现了这个钩子的字典,让人们可以把数据的名称,然后在列表中

Dictionary<name_of_the_data,List<value>> some_other_data_hook; 

这看起来很丑陋值,我想不出有什么更好的办法来解决这个问题。

+0

占位符对象的所有相同类型? – Chandu 2011-04-14 20:19:20

+0

nope,可以是任何东西,但像@taylonr在下面的答案中提到的,我可能担心没有人会使用的东西。 (特别是如果它尚未定义) – 2011-04-14 20:32:32

回答

3

我认为更好的方法是只设计你现在需要的东西。即使你“知道”并且得到了领域专家和企业所有者的承诺,即将有更多规则出现,但如果他们现在不在这里,不要设置占位符。

这是维护方面的一部分,你不应该在你的程序集中有任何未被引用/未使用的代码。它会导致可维护性问题,因为您不确定是否有人可能会使用它。

另一方面是你现在要消耗的能量来定义未定义的东西。也许一个未来的挑战是持续时间,所以你计划,只有产品所有者决定持续时间不是一个好主意。最后,你会设计一些你可能不需要的东西。

请确保您的方法很容易修改,它们不会导致重大更改,然后仅为今天需要完成的工作设置钩子。

把它看成是建立计算机的人,你不希望他们在主板上扔掉一堆额外的焊料,因为未来可能会有新的设备需要使用。如果你没有明确的需求,那么现在就不要编码。

+0

同意 - 代码需要改变,一旦这些参数被定义,并确保做出这些改变的一个确定的方法是提供没有办​​法将它们传递:) – 2011-04-14 20:23:45

+0

是有道理的,谢谢:) 。 – 2011-04-14 20:24:50

1

“有些东西”很模糊。它是否适合通过界面传递?喜欢的东西:Execute(start_time, end_time, DataSet, IValidationRule)其中IValidationRule是:

public interface IValidationRule 
{ 
    bool IsValid(DataSet data); 
} 

这会为你提供最大的灵活性,在不同似地结构与需求的变化不同的“验证挂钩”堵塞。我可能会创建我自己的返回值类型,如ValidationResult或者这些行中的内容。如果您可以对所需行为强制执行合同,则可以围绕结构歧义编码。

如果你没有丝毫的线索“钩子”的结构或行为是什么样子,那么我会同意taylonr。你不能在左边的领域建模很远的东西。

+0

谢谢,@Pete。 – 2011-04-14 20:28:59