共享狀態在某些情況下是壞事。我現在在一個項目中,幾乎所有的方法都會執行某種狀態更改。我相信這是一個問題。一方面,我不能重用這些方法,因爲根據當前的系統狀態,方法調用後的新系統狀態將會不同。另一方面,在這個項目中,測試非常困難或幾乎不可能。
問題
所以我想知道什麼技術在那裏防止共享狀態或重構這樣的應用程序,以便有依賴性少間。
一種方法是以更多功能的編程方式進行編程。還有哪些其他最佳做法,以及哪些情況最適合他們?
代碼示例將非常讚賞,如果他們幫助解釋技術。
例
爲
ModuleA
Public Sub DoSomething
Range("A2").Value = Worksheets("Sheet2").Range(cellReference).Value + 10
End Sub
ModuleB
Global cellReference = "B22"
更好(因爲爲全局變量和沒有硬編碼片和單元格引用無附圖)
ModuleA
Public Sub DoSomething(resultCell, sourceSheet, sourceCell)
Range(resultCell).Value = Worksheets(sourceSheet).Range(sourceCell).Value + 10
End Sub
ModuleB
deleted
說明
所以,我想在這裏應用的技術是:
- 刪除硬編碼值,並通過他們在作爲參數
- 刪除引用全局變量,並通過他們在作爲參數
我知道,這是一個無論如何都應該遵循基本的最佳實踐。但也許有一些特別有助於防止共享狀態。我認爲Erik Meijer表示,如果你有共享狀態,通常會出現問題(我不確定我是否正確地引用了他)。
環境
順便說一句,這是一個Excel VBA項目,沒有軟件工程背景的人開發的大量的遺留代碼。不過,答案並不一定要針對這個特定的設置。
我會大量重構刪除儘可能多的全局變量,這將是第一步。 作爲第二步,對had-code和製作屬性文件的一些重構可能是有用的。 稍後,您可以分析方法,找到代碼重複(通常在這類軟件上有大量重複...) 也許,隨着應用程序的知識需求,您可能可以更進一步並使用一些狀態機... – SoulWanderer 2010-10-04 07:34:32
你是對的:很多重構是最有可能的路要走。是的,許多重複的代碼遍佈整個地方。如果你想添加你的評論作爲答案,我會接受它作爲答案。 – Lernkurve 2010-10-04 18:12:44