我思考模式,允許我回到這兩個計算結果和狀態:返回計算結果和狀態。最佳實踐
有,我能想到的幾種方法:
函數返回計算結果,正在返回的狀態通過參數(不是所有的語言都支持參數,這看起來是錯誤的,因爲一般來說你不希望參數被修改)。 (缺點是你必須創建仿真類來返回函數結果或使用沒有語義含義的對 - 你知道哪個參數是它的順序)。
如果你的狀態就是成功/失敗就可以返回計算值,並在錯誤的情況下拋出異常(看起來像最好的方法,但只有成功/失敗情況的工作,不應該被濫用控制正常的程序流程)。
函數返回值,函數參數委託給onSuccess/onFailure過程。
有一個(state-full)方法類有狀態字段,並且方法返回計算結果(我更喜歡有無狀態/不可變對象)。
請給我利弊和情況使用上述方法或告訴我,我可以使用(最好帶提示的先決條件時使用它們)其他模式的先決條件的提示。
編輯: 真實的例子: 我開發的Java EE互聯網應用,我有一類解析請求參數字符串轉換爲他們的一些業務邏輯對象。解析器正在檢查db是否正在創建或編輯對象,然後向控制器返回從db中獲取的新對象或對象。控制器根據從解析器讀取的對象狀態(新/編輯)採取行動。我知道這很糟糕,我想在這裏改進代碼設計。
在C和C++中,至少完全可以擁有out參數。所以我通常通過返回值返回成功/失敗,並修改一個輸出參數以反映計算輸出。這也允許在動態分配內存的情況下更好的資源控制。 – arne
有很多缺點和專業的,但我想知道這個問題是否會保持開放,因爲它看起來對我來說是類似於http://stackoverflow.com/questions/36707/should-a-function-have-只有一個回報陳述問題。我希望它保持開放,我認爲這些問題完全符合本網站的內容。 –
我認爲其他問題與此完全不同。這是關於在代碼中使用多個return語句,而不是返回多個「結果」。另外我發現這個:http://stackoverflow.com/questions/4181018/what-is-the-pros-and-cons-of-using-out-parameter作爲一個關於out參數的非常好的討論,它涵蓋了第一個提到的方法。 – 0lukasz0