2012-06-07 74 views
2

我有一種情況,我必須通過一個List<>跨2-3個獨立班上下課。現在我主要是使用參數傳遞列表,所以3個類都得到列表。我應該使用靜態列表而不是在整個類中傳遞List來簡化代碼,如Class23.ListObjects.Add(),然後在操作完成後釋放靜態值,以便下一個操作以空列表開始。現在感覺參數變得非常多,如果列表中有正確的值,忘記將列表傳遞給下一個班級等等,我會感到困惑。您認爲什麼?靜態值vs傳遞參數

回答

4

我建議你創建一個新類,它表示由各個類(一個「上下文」類,如果你願意的話)執行的聯合操作。執行該操作所需的值可以作爲該上下文中的實例變量以及用於執行該工作的類的實例。

這樣,你就避免了傳遞東西(因爲代碼的發展,這可能會變得有些難看),同時避免了一個「全局」變量。數據完全處於它需要的範圍內,並在整個操作完成時處理。

+0

上下文概念抽象在這裏聽起來很合理,雖然我不太清楚確切的問題是什麼,但我不認爲靜態成員是好的做法。 – zinking

+0

@zinking:同意,「靜態」是最佳選擇的情況很少(但有些)。在這裏使用它並不合適。 –

1

在編碼實踐中,使用靜態變量或全局變量並傳遞參數很不好。

0

如果使用靜態參數,那麼如果在代碼中的多個位置使用這些函數(尤其是涉及線程時),則會冒着損壞數據的風險。

例如,假設A類需要使用對靜態列表起作用的函數。在這些函數完成之前,類B也嘗試使用它們,導致列表從兩個調用中獲取數據,因爲在這兩種情況下都使用相同的靜態列表。