我目前正在通过一个小应用程序进行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);
答案 0 :(得分:1)
根据标题中的问题,如果您已经在考虑这样的问题,那么我建议传递一个列表。列表可能只包含一个项目,因此它可以很好地代替逐个方法,反之则需要更改接口(或类签名)。
我也在封装驱动程序和一个类中的位置。名字? DriverPlacement怎么样?
PS:因为我不知道你的背景,把所有的东西都拿走了。
答案 1 :(得分:0)
这取决于您的要求。我认为,没有直接的答案适用于所有事情,特别是对于像参数类型决策这样的问题。您应该了解您要解决的真正问题,存在于代码问题背后。不要把漂亮的设计作为你的目标。我很擅长紧急设计。表格遵循功能。实现没有错误的方案是您的目标。好的设计会有更少的错误,但如果你觉得你没有足够的经验,只需尝试一下,测试不同的解决方案。有时,一旦您清楚地看到当前解决方案的缺点,最好编写完成工作并稍后重构的代码。这是TDD的好处,实际上是TDD的基础:红色,绿色,重构。
是否要最小化客户端和服务器之间的数据流量,而不是使用需要最少内存的对象,即驱动程序ID。你是如何分配这些ID的?如果列表得到更新,新ID可能是旧列表中的驱动程序吗?