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

时间:2011-07-03 18:19:49

标签: architecture software-design

我目前正在通过一个小应用程序进行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);
}

目前,我正在传递给SubmitPrediction() selectedDrivers, 但是 ,我也可以传递位置(整数)和driverId(也是int) ,可能会被一个名为Driver的对象所取代,该对象将包含与驱动程序相关的所有内容:

prediction.SubmitPrediction(1, "Michael Schumacher");

可能是:

prediction.SubmitPrediction(1, driver);

我想知道哪种方法更好。将驱动程序和位置封装在一个类中可能更好,但我无法想出一个像样的名字。预测已经被认为具有一堆选定的驱动因素及其位置。然后我可以将字典作为列表。

prediction.SubmitPrediction(SomeEncapsulatedClassHere);

2 个答案:

答案 0 :(得分:1)

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

我也在封装驱动程序和一个类中的位置。名字? DriverPlacement怎么样?

PS:因为我不知道你的背景,把所有的东西都拿走了。

答案 1 :(得分:0)

这取决于您的要求。我认为,没有直接的答案适用于所有事情,特别是对于像参数类型决策这样的问题。您应该了解您要解决的真正问题,存在于代码问题背后。不要把漂亮的设计作为你的目标。我很擅长紧急设计。表格遵循功能。实现没有错误的方案是您的目标。好的设计会有更少的错误,但如果你觉得你没有足够的经验,只需尝试一下,测试不同的解决方案。有时,一旦您清楚地看到当前解决方案的缺点,最好编写完成工作并稍后重构的代码。这是TDD的好处,实际上是TDD的基础:红色,绿色,重构。

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