2011-12-09 27 views
3

現在我有一個子驗證一堆文本框和組合框。VB。 NET:幾個帶有Exit Sub的IF語句或嵌套的IF語句無Exit Sub?

我以前使用過許多IF語句來驗證並彈出不同的消息框並在每個IF語句中退出Sub。

但我聽說過多退出會降低效率,他們不建議使用。相反,嵌套IF更好,因爲它會讓流程自然走到最後。

然後我發現如果我使用嵌套的IF,它將很難閱讀,因爲messageboxes都與條件分離。

我沒有軟件開發經驗。所以我的問題是:在真實的項目中,你會選擇哪種風格?

+2

這是無稽之談,不要相信你聽到的一切。即使在這裏,措施。或者推理出來,這是UI代碼。你只有一個人才能保持快樂。你有1億個CPU週期來做到這一點。 –

回答

6

你應該使用什麼更具可讀性和你同意你的團隊。

至於有很多Exits性能下降 - 我不知道這是否屬實,但即使是這樣,我認爲它對我來說是一個微小的優化。您可以輕鬆測試自己 - 在循環中運行這兩種類型的代碼(數百萬次/十億次),並測量每次使用StopWatch類所花費的時間。

我個人發現在這個特定情況下多個退貨更容易閱讀,這是我平常的風格。

+1

+1恕我直言,在大多數情況下,可讀性比性能更重要(除非性能命中特別明顯,這不應該在這種情況下)。 – CJM

0

就我個人而言,我使用嵌套的ifs進行處理,並使用Exit Sub/Function進行前置條件驗證。我已經看到一些開發人員將Exit Sub/Function從窗口中拋出,並返回關鍵字。

這取決於貴公司的目標與複雜性。許多使用Exit Sub/Function語句的原因是在子和函數開始處理之前通過驗證前置條件來減少圈複雜度。這裏的想法是基於違反前置條件退出,這可能是嵌套ifs中的其他條件,這將大大降低圈複雜度,從而增加代碼的可維護性。

就像其他所有東西一樣,這裏的可取之處是取捨。如果你有太多的Exit Subs或Exit Function,當通過調試調用該方法時,它可能會混淆爲什麼該方法提前終止並導致更長的調試時間。

有關性能問題的爭論。但是,我從來沒有測試過它。我可以說我沒有任何與使用Exit相關的性能問題,而不是使用嵌套的ifs。