Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
Architecture 我应该将列表传递给此方法还是逐个传递?_Architecture_Software Design - Fatal编程技术网

Architecture 我应该将列表传递给此方法还是逐个传递?

Architecture 我应该将列表传递给此方法还是逐个传递?,architecture,software-design,Architecture,Software Design,我目前正在通过一个小应用程序进行TDD,遇到了一些我不知道如何解决的问题。该应用程序允许人们选择他们认为将在某个位置完成的驾驶员。该页面将在ASP.NET中生成 我的测试: [Test] public void SubmitPrediction() { Prediction prediction = new Prediction(); Dictionary<int, string> selectedDrivers = new Dictionary<int, s

我目前正在通过一个小应用程序进行TDD,遇到了一些我不知道如何解决的问题。该应用程序允许人们选择他们认为将在某个位置完成的驾驶员。该页面将在ASP.NET中生成

我的测试:

[Test]
public void SubmitPrediction()
{
    Prediction prediction = new Prediction();

    Dictionary<int, string> selectedDrivers = new Dictionary<int, string>()
    {
        {1, "Michael Schumacher"},
        {2, "Jensen Button"}
    };

    prediction.SubmitPrediction(selectedDrivers);
}
可能是:

prediction.SubmitPrediction(1, driver);
我想知道的是哪种方法更好。将驱动程序和位置封装在一个类中可能更好,但我无法给出一个合适的名称。预测已经被接受,这意味着它有一组选定的驱动程序及其位置。然后我就可以把字典列成一个单子

prediction.SubmitPrediction(SomeEncapsulatedClassHere);

这取决于你的要求。我认为,没有一个直截了当的答案适用于所有问题,特别是对于参数类型决策这样的问题。您应该了解您试图解决的真正问题,即代码问题背后存在的问题。不要把漂亮的设计作为你的目标。我很擅长应急设计。形式服从功能。实现没有bug的场景是您的目标。好的设计会有更少的bug,但如果你觉得自己没有足够的经验,就尝试一下,测试不同的解决方案。有时候,在清楚地看到当前解决方案的缺点后,最好编写完成这项工作的代码,然后进行重构。这就是TDD的好处,实际上是TDD的基础:红色、绿色、重构


您是否希望最小化客户端和服务器之间的数据流量,而不是使用需要最少内存的对象,即驱动程序id。您如何分配这些id?如果列表得到更新,新id是否意味着旧列表中的驱动程序?

根据标题中的问题,如果您已经考虑过这样一个问题,那么我建议传递一个列表。一个列表可能只包含一个项,因此它可以很好地代替逐个方法,反之则需要更改接口(或类签名)

我也会将驱动程序和位置封装在一个类中。名字?换个司机怎么样


顺便说一句:我不知道你的上下文,所以你可以把一切都说得一清二楚。

driverId可能是由某个数据库自动生成的。我知道我不应该提前考虑太多,但用户将有几个下拉框可供选择。driverId将是值(你看不到)。应用程序的用户将能够为他们认为将在该位置完成的不同位置选择一组驱动程序(可能是下拉列表)。提交后,我将使用presenter类从asp页面获取值。所选的驱动程序应该传递给prediction类,这是我遇到的问题,我可以使用presenter中的foreach循环将驱动程序/driverid传递给prediction。我也可以把它们放到一个列表中,然后把它们传递给演示者。。。驾驶员位置,我喜欢:-)
prediction.SubmitPrediction(SomeEncapsulatedClassHere);