我必须用一些我还不知道的东西来验证数据。我想在函数参数中提供一些占位符,以便支持这些对象。
当前
Execute(start_time, end_time, DataSet, some_other_data_hook)
目前,我已将此挂钩实现为字典,以便人们可以将数据的名称放在列表中
Dictionary<name_of_the_data,List<value>> some_other_data_hook;
这看起来很丑陋,我想不出更好的方法来解决这个问题。
答案 0 :(得分:3)
我认为更好的方法是只设计你现在需要的东西。即使你“知道”并且领域专家和企业主承诺会有更多的规则,如果他们现在不在这里,也不要试图设置占位符。
部分原因是维护方面,您的程序集中不应包含任何未引用/未使用的代码。它会导致可维护性问题,因为您不确定某人是否正在使用它。
另一个方面是你现在要消耗的能量来定义未定义的东西。也许一个未来的钩子是持续时间,所以你计划它,只为产品所有者决定持续时间不是一个好主意。最后,您将构建一些您可能不需要的东西。
确保方法易于修改,不会导致重大更改,然后只为今天需要完成的操作设置挂钩。
将其视为构建计算机的人,您不希望他们在主板上丢弃一大堆额外的焊料,因为未来可能需要新设备。代码也是如此,如果你没有定义的需求,现在就不要编码。
答案 1 :(得分:1)
Execute(start_time, end_time, DataSet, IValidationRule)
其中IValidationRule
是:
public interface IValidationRule
{
bool IsValid(DataSet data);
}
这将为您提供最大的灵活性,以便在需求发生变化时插入不同结构的不同“验证挂钩”。我可能会创建自己的返回值类型,如ValidationResult
或类似的东西。如果您可以就所需行为强制执行合同,则可以围绕结构歧义进行编码。
如果你没有丝毫的线索,那么“钩子”的结构或行为会是什么样子,那么我同意taylonr。你不能在左侧场中模拟远处的东西。