2010-08-26 42 views
1

我想知道在這種通用語句類型中是否有更好的實踐達成共識。文體問題 - 是否分開功能?

if(CouldDoSomething()) 
    DoThatThing(); 
else 
    WriteErrors(GetTheErrorsThatWouldHaveResulted()); 

。至於你要檢查潛在問題,那麼無論你想做的事還是回去拿錯誤消息的事情,這可能需要兩倍的工作。
它還需要3個獨立的功能:
CouldDoSomethingDoThatThingGetTheErrorsThatWouldHaveResulted

string errorString=TryToDoSomeThing(); 
if(!string.isNullOrEmpty(errorString)) 
    WriteErrors(errorString); 

可能不顯得乾淨,但只需要一個函數TryToDoSomething,這意味着較少的額外開銷。一個人不必重複操作來檢查你是否可以做那件事,或者找出你做這件事會導致的錯誤。

可能有更多的方式來做到這一點,就像try/catch blocks一樣。你的個人喜好是什麼?關於這類問題有什麼共識嗎?

回答

1

如果它看起來像例外,你應該使用的try/catch風格

如果這是真/假(和功能沒有變化),那麼您可能會返回結果標誌。據我所知,返回錯誤字符串並不是很好的決定。

+0

如果您解析用戶輸入,是不是想向他們發送有關他們犯的一些/所有錯誤的消息? – user420667 2010-08-26 22:29:57

+0

有什麼可以拒絕我與異常做到這一點? – bobrik 2010-08-27 21:59:32

+0

你可以做到這一點,但你一次只能得到一個例外(我認爲),這可能是不可取的。 此外,如果您使用異常,您將被迫使用try/catch塊,並且不能執行其他兩個選項之一。 我想要更多的理由而不是做這個或那個。 – user420667 2010-08-28 01:51:26