这不是我第一次遇到这个问题,当然也不会是最后一次。当有多个选项供用户选择时,应该有比执行无数 IF 语句更有效的方法,并且该用户为几个变量而不是其他变量提供输入,尽管我们也需要为其他未选择的变量做一些工作未选择的状态需要一些工作。
5 个带有子选项的选项意味着我们的 IF 语句数量急剧增加,我不确定 SWITCH 是否适用,因为仍然需要比较逻辑,所以我们仍然需要在使用 SWITCH 之前以某种方式评估变量,这又是 IF?
如果您已经了解范围,请提供您对更有效地处理这些案例的模式或解决方案的见解?或者,如果您没有,我已经准备了一个示例来更好地解释。这是我们都遇到过的非常普遍的问题,所以如果您觉得您不理解,请不要忽略 - 我可能真的不擅长解释它。
我的第一个示例很长,但与更新用户详细信息(预填充表单+验证)有关。当用户提交一些参数但不是全部时,我们不想为那些保持不变的字段触发验证。简而言之,这会生成许多嵌套的 IF。
现在是第二个例子,我希望能消除围绕我的问题的所有困惑。考虑简单的 HTML 表格。在我们的表中,我们有四列名称:
活动名称 | 活动类型 | 甚至开始日期 | 活动结束日期
在我的场景中,我应该允许按两个字段排序。
作为用户,我可以为您生成 4X3= 12 个仅使用任意两个字段进行排序的案例
三个它增长到 4x3x2= 24
显然,没有 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 中,我们可以以任何可以想象的方式并使用任意数量的参数进行排序。
我认为在一本“Spring”frmwrk 书中,他们已经将整章专门用于这个多排序的表格示例问题。可能是另一个图书馆,它很少说明事情是如何运作的。我的 atm 没有它,所以无法查找。