2011-07-03 61 views
0

我目前正在TDD'ing我的方式通過一個小應用程序,並遇到了一些我不知道如何解決。該應用程序讓人們選擇他們認爲將在特定位置完成的駕駛員。該頁面將在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(也詮釋,大概會可以用一個驅動器,將擁有一切相關)的對象調用驅動程序替換爲:

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

可能會是:

prediction.SubmitPrediction(1, driver); 

我想知道的是哪種方法更好。將駕駛員和職位封裝在一個班級中可能會更好,但我不能拿出一個體面的名字。預測的意義在於它有一堆選定的駕駛員及其位置。然後,我可以使字典成爲一個列表。

prediction.SubmitPrediction(SomeEncapsulatedClassHere); 

回答

0

這取決於您的要求。我認爲,沒有直接的答案適用於所有問題,特別是對於像參數類型決定這樣的問題。您應該瞭解您正在嘗試解決的實際問題,存在於代碼問題之後。不要讓美麗的設計成爲你的目標。我很擅長應急設計。形式遵循功能。實現你的方案沒有錯誤是你的目標。良好的設計會帶來更少的錯誤,但如果您覺得自己沒有足夠的經驗,只需嘗試一下,測試不同的解決方案。有時候最好是編寫能夠完成工作並稍後重構的代碼,一旦你清楚地看到了當前解決方案的缺點。這就是TDD的好處,它實際上是TDD的基礎:紅色,綠色,重構。

是否要最小化客戶端和服務器之間的數據通信量,而不是使用需要最少內存的對象(驅動程序ID)。你如何分配這些ID?如果列表得到更新,新的ID可能意味着舊列表中的驅動程序?

+0

driverId可能會被一些數據庫自動生成。我知道我不應該想太多,但用戶將有幾個dropdownbox可供選擇。 driverId將是值(你看不到)。 –

1

根據標題中的問題,如果您已經在考慮這樣的問題,那麼我會建議通過一個列表。一個列表可能只包含一個項目,所以它可以很好地代替一個接一個的方法,反之則需要更改接口(或類簽名)。

我也在封裝驅動程序和一個職位的位置上。名字? DriverPlacement怎麼樣?

PS:把所有東西都帶上一粒鹽,因爲我不知道你的上下文

+0

該應用程序的用戶將能夠爲他們認爲將在該位置完成的不同位置選擇一堆司機(可能是dropdownlists)。提交後,我將有一個演示者類從asp頁面獲取值。選定的驅動程序應該傳遞給預測類,這是我卡住的部分,我可以在演示者中使用foreach循環來將驅動程序/ driverid傳遞到預測。我也可以把它們放在一個列表中,然後*將它們傳遞給主持人... DriverPlacement,我喜歡它:-) –

相關問題