這不是我第一次遇到這個問題,肯定不會是最後一個。當有多個選項供用戶選擇時,應該比做無數的IF語句更有效率,而且這個用戶爲多個變量提供輸入,而不是其他的變量,儘管我們需要爲其他人做一些工作 - 沒有選擇他們的地方非選擇的國家需要一些工作。根據幾個參數處理許多條件的模式是什麼?
5個子選項的選項意味着我們的IF語句數量顯着增加,我不確定SWITCH是否適用,因爲仍然需要比較邏輯,所以我們仍然需要以某種方式評估SWITCH的變量,然後使用它再次是IF?
如果您已經理解了範圍,請提供您對於要做的模式或解決方案的洞察,以更有效地處理這些案例?或者如果你沒有,我已經準備好一個例子來解釋更好。這是我們都遇到過的非常普遍的問題,所以如果你覺得自己不明白,請不要忽視 - 我可能在解釋它的時候真的很糟糕。
我的第一個例子很長,但與更新用戶詳細信息(預填充表單+驗證)有關。當用戶提交一些參數但不是全部時,我們不想觸發那些保持不變的字段的驗證。簡言之,這會生成一些嵌套的IF。
現在第二個例子我希望能夠清楚我的問題的所有困惑。考慮簡單的HTML表格。在我們的表格中,我們有四列名稱:
活動名稱|事件類型|即使開始日期|活動結束日期
在我的方案中,我應該允許通過兩個字段排序。
作爲一個用戶,我可以爲你生成4X3 = 案件僅僅用任何兩個字段
三個排序它長到4x3x2 =
顯然沒有if或switch語句拯救我們(很簡單)。實際上,我很少使用SWITCH語句,asfaik至少在允許通過整數或字符串切換的java中是相當有限的。
但SWITCH有趣的一面的問題是,之前提供的變量,我必須先評估它們。因此,從HTML表單我提出兩個變量sortByParamOne = NAME sortByParamTwo = TYPE
然後,我要聲明的是:
if(sortByParamOne.equals("NAME")&&sortByParamTwo.equals("TYPE"))
case = 1
else if ...
case = 2
else if ...
12X IF總共只需準備變量
這種或那種方式開關廠只有單數輸入,並且當我們有兩個扮演不同角色的角色變量時,似乎沒有什麼幫助。如果我錯了,請糾正我。
如何處理這種情況下不使用大量的IF保持代碼清潔和短?看起來這是一種數學領域,而不是設計模式或我們的編程策略,甚至可能與SQL中的集合論有關,我們可以通過任何可能的方式訂購,並使用任意數量的參數。
我認爲在一個「春天」frmwrk書中,他們專門爲這個多表排序示例問題撰寫了整章。可能是另一個圖書館,很少說事情如何工作。我沒有擁有它atm所以不能查找。
嗯,我只是想到了另一個很好的例子,就是CHESS ENGINE!也許我需要閱讀這篇文章,因爲他們不會在那裏寫出數十億的IFs? :-)我同意你的解決方案的少數選項和條件。這將清理我們的代碼約24例。但是如果我有8列和3個變量排序標準呢? 8 * 7 * 6 = 336例 - 我們會失去耐心:-) – Aubergine