2 回答
TA贡献1851条经验 获得超4个赞
从干净代码的角度来看,这两个选项(if/else 或 switch)都不是优选的。但在没有更多背景的情况下解决这个问题是不可能的。
首先,真正的问题是示例代码中的方法必须查看如此多的参数。
函数的理想参数数量为零 (niladic)。接下来是一个(一元),紧接着是两个(二元)。应尽可能避免三个参数(三元组)。超过三个(多元)需要非常特殊的理由,然后无论如何都不应该使用。
换句话说:您努力编写参数尽可能少的方法。因为每个参数都可能增加对此类 if 或 switch 对比的需求。
当多个 switch 语句适合您时,一种潜在的途径可能会转向多态性。OOP 中切换的“正确”方法是使用不同的类,并使用运行时多态性来确定在运行时实际调用哪个方法。
鉴于添加的上下文:
ug = input.nextLine(); if(ug.equals("U") || ug.equals("u")) { ...
干净的代码解决方案可以是这样的:
ug = input.nextLine(); if (ug.equalsIgnoreCase("u")) { fetchValuesForUndergraduate(); }
这就对了!当前代码的真正问题是它在一个地方做了很多事情。对此的“干净代码”解决方案是将代码移动到不同的帮助器方法中,这些方法具有很好的说明性名称,并且执行的操作要少得多。
TA贡献1998条经验 获得超6个赞
无论哪种方式都可以争论——如果它像这样适合你,我就不会太担心。Switch 语句将使代码看起来像这样
switch(var1)
case 1:
{
//code
switch(var2)
case 1:
{
//code
}
switch(var3)
case 1:
{
//code
}
case 2:
{
//code
}
}
case 2:
{
//code
}
case 2: {
//code
}
无论哪种方式你绝对可以让它工作
添加回答
举报