Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 函数参数中是否有挂钩以容纳将来的数据?_C#_.net_Oop_Frameworks - Fatal编程技术网

C# 函数参数中是否有挂钩以容纳将来的数据?

C# 函数参数中是否有挂钩以容纳将来的数据?,c#,.net,oop,frameworks,C#,.net,Oop,Frameworks,我必须用一些我还不知道的东西来验证数据。我想在函数参数中提供一些占位符,以支持这些对象 当前 Execute(start_time, end_time, DataSet, some_other_data_hook) 目前,我已经将这个钩子实现为一个字典,这样人们就可以在列表中输入数据名和值 Dictionary<name_of_the_data,List<value>> some_other_data_hook; Dictionary一些\u其他\u数据\u钩子;

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

当前

Execute(start_time, end_time, DataSet, some_other_data_hook)
目前,我已经将这个钩子实现为一个字典,这样人们就可以在列表中输入数据名和值

Dictionary<name_of_the_data,List<value>> some_other_data_hook;
Dictionary一些\u其他\u数据\u钩子;

这看起来确实很难看,我想不出任何更好的方法来解决这个问题。

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

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

另一个方面是为了定义一些未定义的东西而消耗的能量。也许一个未来的钩子是持续时间,所以你为它做计划,只让产品所有者决定持续时间不是一个好主意。最后,您将设计一些您可能不需要的东西

确保您的方法易于修改,不会导致破坏性的更改,然后只为今天需要做的事情设置挂钩


把它想象成一个制造计算机的人,你不会希望他们在主板上扔下一大堆多余的焊料,因为将来可能会有一段时间需要新设备。代码也是一样,如果你没有明确的需求,现在就不要编码。

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

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

另一个方面是为了定义一些未定义的东西而消耗的能量。也许一个未来的钩子是持续时间,所以你为它做计划,只让产品所有者决定持续时间不是一个好主意。最后,您将设计一些您可能不需要的东西

确保您的方法易于修改,不会导致破坏性的更改,然后只为今天需要做的事情设置挂钩

把它想象成一个制造计算机的人,你不会希望他们在主板上扔下一大堆多余的焊料,因为将来可能会有一段时间需要新设备。代码也是一样,如果你没有明确的需求,现在就不要编写它。

有些东西很模糊。它是否适合传入接口?类似于:
Execute(开始时间、结束时间、数据集、IValidationRule)
其中
IValidationRule
是:

public interface IValidationRule
{
    bool IsValid(DataSet data);
}
这将为您提供最大的灵活性,以便在需求发生变化时插入结构千差万别的不同“验证挂钩”。我可能会创建自己的返回值类型,比如
ValidationResult
或者类似的东西。如果可以对所需的行为强制执行契约,则可以围绕结构歧义进行编码

如果你一点也不知道“钩子”的结构或行为会是什么样子,那么我同意泰勒的观点。你不能在左边的字段中对那么远的东西建模。

“一些东西”非常模糊。它是否适合传入接口?类似于:
Execute(开始时间、结束时间、数据集、IValidationRule)
其中
IValidationRule
是:

public interface IValidationRule
{
    bool IsValid(DataSet data);
}
这将为您提供最大的灵活性,以便在需求发生变化时插入结构千差万别的不同“验证挂钩”。我可能会创建自己的返回值类型,比如
ValidationResult
或者类似的东西。如果可以对所需的行为强制执行契约,则可以围绕结构歧义进行编码


如果你一点也不知道“钩子”的结构或行为会是什么样子,那么我同意泰勒的观点。你不能在左边的字段中建模那么远的东西。

占位符对象是否都是相同的类型?不,可以是任何类型,但就像下面的答案中提到的@taylonr,我可能担心没有人会使用的东西。(特别是如果还没有定义的话)占位符对象是否都是同一类型的?不,可以是任何类型,但就像下面的答案中提到的@taylonr,我可能担心没有人会使用的东西。(特别是在尚未定义的情况下)同意-一旦这些参数被定义,代码就需要更改,确保进行这些更改的可靠方法是不提供传递它们的方法:)同意-一旦这些参数被定义,代码就需要更改,确保做出这些更改的一个可靠方法是不提供传递它们的方法:)