有時,您只需要按設定順序執行一系列操作,例如執行順序圖時。執行代碼執行順序的最佳方法是什麼,以防止重構通過序列更改引入細微的錯誤?執行代碼執行順序
讓我們假設現有的單元測試不會發現由於改變foo()和bar()在下面的執行順序而導致的任何問題。
幾個我見過和使用的方法:
評論(依賴的人閱讀&理解它們):
// do this
foo();
// then this
bar();流利的語法(使代碼更像英文,並勸阻肆意重構):
obj
.Do
.foo()
.Then
.bar();狀態變量&猶豫不決(太複雜):
foo_done=false;
if(foo()) foo_done=true;
if(foo_done) bar(); else throw_an_exception;分組邏輯塊到功能:
void foo_bar()
{
foo();
bar();
}
...等等太醜陋來形容(嵌套,事件,函數指針數組,命名功能開始(),中()和end()...) 。
有沒有更好的工程模式來做這種事情?
我認爲一個更具體的例子可能會得出更好的答案。事情需要完成的順序有多嚴格?如果您總是需要按照確切的順序調用某些方法,而不是這樣做,那麼錯誤是什麼?void doEverything()會按正確的順序調用所有方法。如果您確實需要以臨時命令調用操作,那麼有什麼限制?爲什麼他們需要按特定順序調用?他們是否在一些共同的國家運作?他們有沒有單元測試的副作用? – 2009-07-08 14:59:04