当前位置: 首页 > 知识库问答 >
问题:

Switch语句导致重复的代码

洪浩
2023-03-14

我是一名初级开发人员,希望更好地组织我的代码。

现在,我正在处理表单编号。我检索表单编号的哈希图,根据表单编号,我需要调用不同的方法。每个方法都接受相同的参数,但做的事情不同。

例如:


var formDetails = new inferForms.buildFormsMap

for(form in formDetails){

switch(form.formNumber){
          case "A1345":
            getExclusionDetails(account, state, form, businessDealing)
            break
          case "B254":
            getExclusionDetails(account, state, form, businessDealing)
            break
          case "B297":
            getPartnershipDetails(account, state, form, businessDealing)
            break
          case "C397":
            getBrokerageDetails(account, state, form, businessDealing)
            break
          case "D972":
            getBrokerageDetails(account, state, form, businessDealing)
            break
          case "E192":
            getBrokerageDetails(account, state, form, businessDealing)
            break
          case "E299":
            getBrokerageDetails(account, state, form, businessDealing)
            break
          case "F254":
            getLocationDetails(account, state, form, businessDealing)
            break
          case "F795":
            getLocationDetails(account, state, form, businessDealing)
            break
          case "G642":
            getContractDetails(period, wcmJurisdiction, newForm, wcmBusiness, frm)
            break
          case "G979":
            getContractDetails(period, wcmJurisdiction, newForm, wcmBusiness, frm)
            break
   }
}

几点注意事项

-方法是由另一个开发人员构建的。他辞职了,所以我承担了他的工作,并希望重构以使其变得更好。

-起点是表单编号的哈希映射。我生成HashMap,然后循环遍历它,根据HashMap中的每个表单编号收集详细信息。

-即使我要将这些方法转换为对象继承结构,我仍然需要一个switch语句来知道要实例化哪个子类,不是吗?switch语句与上面的语句类似吗?

-其中一些case语句正在调用完全相同的方法。有没有避免重复的方法

谢谢你的帮助。我正在努力想办法更好地重新设计它。请让我知道,如果我可以提供更多的细节。

共有1个答案

何禄
2023-03-14

您可以将开关情况替换为if,否则如果,因为有多个条件具有相同的结果,它将减少重复。

        var formDetails = new inferForms.buildFormsMap

        for(form in formDetails){
            var formNumber = form.formNumber
            if(formNumber.equals("A1345") || formNumber.equals("A1345")){
                getExclusionDetails(account, state, form, businessDealing)
            } else if (formNumber.equals("B297") || formNumber.equals("C397")) {
                getPartnershipDetails(account, state, form, businessDealing)
            } else if (formNumber.equals("D972") || formNumber.equals("E192")) {
                getBrokerageDetails(account, state, form, businessDealing)
            } else if (formNumber.equals("F254") || formNumber.equals("F795")) {
                getLocationDetails(account, state, form, businessDealing)
            } else if (formNumber.equals("G642") || formNumber.equals("G979")) {
                getContractDetails(period, wcmJurisdiction, newForm, wcmBusiness, frm)
            }
        }
 类似资料:
  • 我试图理解switch语句。所以我已经解决了这个问题。“软件公司销售的软件包零售价为99美元。数量折扣如下: 10-19=20% 20-49=30% 50-99=40% 100或更多=50% 编写一个程序,要求用户输入购买的软件包数量。然后,程序应显示折扣金额(如果有)和折扣后的购买总额。 我使用结构和几个关系运算符,它看起来像这样 我想知道是否可以将可能的数字范围存储在单个变量中,然后将其用于语

  • switch 语句可以替代多个 if 判断。 switch 语句为多分支选择的情况提供了一个更具描述性的方式。 语法 switch 语句有至少一个 case 代码块和一个可选的 default 代码块。 就像这样: switch(x) { case 'value1': // if (x === 'value1') ... [break] case 'value2':

  •  使用 switch 语句可以更简洁地实现 if ~ else if 的结构。格式如下。 switch(base_expression) { casecondition_expression1: casecondition_expression2: : : default: : : }  写在 base_expression 位置的表达式会在刚开始时被求值。switch 后面的语句块中的 case

  • C# 中的 switch 语句有些类似于《 if else if 语句》,都可以根据表达式执行某个的语句块,其语法格式如下: switch(表达式){     case value1:     //表达式的值为 value1 时,要执行的代码         break;     case value2:     //表达式的值为 value2 时,要执行的代码         break;   

  • 当条件判断分支太多的时候,我们会使用switch语句来优化逻辑。 package main import "fmt" import "time" func main() { // 基础的switch用法 i := 2 fmt.Print("write ", i, " as ") switch i { case 1: fmt.Println("

  • Swift 条件语句 switch 语句允许测试一个变量等于多个值时的情况。 Swift 语言中只要匹配到 case 语句,则整个 switch 语句执行完成。 语法 Swift 语言中 switch 语句的语法: switch expression { case expression1 : statement(s) fallthrough /* 可选 */