如果我有一個從幾個地方調用的函數,並且它需要滿足某些條件才能執行,那麼應該在哪裏檢查該條件?在我的情況下,它是爲了繪圖 - 如果按住鼠標按鈕,然後執行繪圖邏輯(當您拖動時,這是在鼠標移動處理程序中完成的)。最佳實踐 - 什麼時候評估函數執行的條件
選項一表示將它放入函數中它保證被檢查。抽象的,如果你願意的話。
public function Foo() {
DoThing();
}
private function DoThing() {
if (!condition) return;
// do stuff
}
我有這樣的問題是閱讀的Foo
的代碼,這可能是遠離DoThing
時,它看起來像一個bug。首先想到的是條件沒有被檢查。
然後,選項二在調用之前進行檢查。
public function Foo() {
if (condition) DoThing();
}
這讀起來更好,但現在你不必擔心從你所說的任何地方檢查。
選項三是重命名該函數以更具描述性。
public function Foo() {
DoThingOnlyIfCondition();
}
private function DoThingOnlyIfCondition() {
if (!condition) return;
// do stuff
}
這是「正確的」解決方案嗎?或者這是否有點過分?我覺得如果一切都像這個函數名稱將開始重複他們的代碼。
關於這是主觀的:當然是,並且可能沒有正確的答案,但我認爲它在這裏仍然完美。從更好的程序員那裏獲得建議,而不是我第二個最好的學習方式。主觀問題正是Google無法回答的問題。
這回答了結構問題。至於名稱,多思考一點應該產生一個適當的描述性而不重複的選擇。也許在'DoThing()'的'DrawOnDrag()'方面有一些東西。 – Novelocrat 2010-06-03 13:18:19