`
yangjizhong24
  • 浏览: 399125 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

if...else...的避免

阅读更多

if...else...一个例子:

if(var.equals("A")){   
            doA();   
        }else if(var.equals("B")){   
            doB();   
        }else if(var.equals("C")){   
            doC();   
        }else{   
            doD();   
        }  

 

这样的代码很常见,也非常平常,我们大家都写过。但正是这样平常才隐藏着我们永远没有注意的问题。问题就在于,如果某一天这个选项不再仅仅是ABC,而是增加了新的选项,会怎样呢?你也许会说,那没有关系,我把代码改改就行。然而事实上并非如此,在大型软件研发与维护中有一个原则,每次的变更尽量不要去修改原有的代码。如果我们重构一下,能保证不修改原有代码,仅仅增加新的代码就能应付选项的增加,这就增加了这段代码的可维护性和可变更性,提高了代码质量。那么,我们应当如何去做呢?

 

经过深入分析你会发现,这里存在一个对应关系,即A对应doA()B对应doB()...如果将doA()doB()doC()...与原有代码解耦,问题就解决了。如何解耦呢?设计一个接口X以及它的实现ABC...每个类都包含一个方法doX(),并且将doA()的代码放到A.doX()中,将doB()的代码放到B.doX()中...经过以上的重构,代码还是这些代码,效果却完全不一样了。我们只需要这样写:

X x = factory.getBean(var);
x.doX();

 

 

 

分享到:
评论

相关推荐

    C语言中分支结构:if语句、if-else语句和switch语句的使用方法.docx

    C语言中分支结构:if语句、if-else语句和switch语句的使用方法 C语言中分支结构是一种非常基本但非常重要的编程结构,它允许程序根据条件执行不同的代码块。在C语言中,分支结构有三种基本类型:if语句、if-else...

    if.rar_If..._if嵌套

    在编程领域,`if` 和 `if...else` 结构是条件控制的基础,它们允许程序根据不同的条件执行不同的代码块。而 `if` 的嵌套则是在这些基础之上的一种更复杂的逻辑控制方式,用于处理多层条件判断。下面将详细阐述 `if` ...

    if.rar_If..._跳转

    - **避免过多的if嵌套**:过多的嵌套可能导致代码难以阅读和理解,可以尝试重构代码,使用策略模式或函数组合来简化逻辑。 - **使用开关(switch)**:当有多个条件分支时,`switch` 语句通常比多个 `if...else if...

    PIcC.rar_If..._PIC_picc _picc pdf

    标题中的“PIcC.rar_If..._PIC_picc _picc pdf”暗示了主题是关于PIC微控制器(PIC Microcontroller)使用C语言编程时,如何高效地运用条件语句,特别是`if...else`结构。`PICC`通常指的是PICC编译器,这是一种专门...

    在python中利用try..except来代替if..else的用法

    在这个例子中,`if fast.next == None` 用于检查 `fast` 指针是否已经到达链表尾部,避免 `fast.next.next` 时引发 `AttributeError`(因为访问空指针的下一个节点)。如果发生异常,我们实际上可以推断链表没有环,...

    Java中多重if.pdf

    4. **避免过多嵌套**:虽然多重if...else语句可以无限嵌套,但过度的嵌套会使代码难以理解和维护。如果条件判断过于复杂,可以考虑使用`switch`语句或者设计模式来简化逻辑。 总之,Java中的多重if...else语句提供...

    python基础教程:在python中利用try..except来代替if..else的用法

    相反,`if...else` 语句用于条件控制,根据条件的真假执行不同的代码块。在某些特定场景下,`try...except` 可以用来替代 `if...else`,特别是在处理可能引发错误的操作时。 在描述的示例中,题目是判断一个链表...

    if.rar_If...

    为了处理更复杂的逻辑,我们可以使用 "elif"(即 "else if" 的缩写)来添加更多的条件分支: ```python if (条件1): # 当条件1为真时执行的代码块 elif (条件2): # 当条件1为假且条件2为真时执行的代码块 else: ...

    br_if.rar_If...

    在分析`br_if.c`源代码时,我们可以深入理解如何在保持效率的同时避免并发问题。这包括检查是否在适当的地方解锁,以及在可能睡眠前释放资源,确保其他线程能继续执行。同时,了解如何在不影响性能的情况下,利用`if...

    详解JavaScript 中 if / if...else...替换方式

    在JavaScript编程中,if和if...else语句是基本的流程控制工具,用于基于特定条件执行不同的代码块。然而,在某些情况下,我们可能需要更简洁或者更高效的方式来替代标准的if/else结构。本文将探讨几种常见的if和if.....

    elseif.js:嵌套ifelse语句

    标题中的"elseif.js"暗示我们将讨论与JavaScript中的`else if`(通常写作`else if`,但有时为了节省空间或个人偏好,也可能写作`elseif`)语句相关的主题。 `else if`语句是`if`语句的扩展,当最初的`if`条件不满足...

    javascript 分支结构if()结构.md

    ### JavaScript中的if分支结构 在JavaScript编程语言中,分支结构是一种重要的控制流程工具,它允许程序根据特定条件...此外,在编写多层嵌套的`if`结构时,还应注意代码的整洁性和可维护性,避免过于复杂的情况出现。

    DirectCodes.zip_If...

    为了更深入地理解这段代码,你需要打开并仔细阅读其内部实现,包括变量定义、函数调用以及`if...else...`结构的使用。 总之,MATLAB中的`if`语句是控制流的关键部分,它允许程序员根据程序运行时的条件来决定执行...

    代码中大量的 if else如何优化.doc

    我们可以将判断条件取反,然后 return,避免了 else 语句的使用。例如: ```java if (!condition) { return xxx; } // do something ``` 这种方法可以使得代码更加简洁和易读。 其次,让我们看一下策略模式。策略...

    JavaScript程序设计-条件语句.pdf

    这里我们将深入探讨JavaScript中的条件语句,包括if、if...else和if...else if...else语句。 1. 单分支if语句 单分支if语句是最基础的条件判断形式,它的结构是: ```javascript if (条件) { // 条件为true时...

    检查pascal程序代码begin和end,if和then和else匹配程序

    `begin` 和 `end` 语句用于定义一个代码块,而`if...then` 和 `if...then...else` 语句则用于条件判断。在编写Pascal程序时,正确地匹配这些关键词至关重要,因为这直接影响到程序的执行逻辑和语法正确性。下面将...

    C语言程序设计(第2版)-2期 拓展知识4-2 if语句的嵌套.pdf

    - **正确使用花括号**:花括号可以帮助清晰地表示代码块,避免else与错误的if匹配,特别是在if后只有一条语句的情况下,也应该使用花括号。 - **逻辑清晰**:确保每个条件和相应的代码块逻辑清晰,避免条件冲突导致...

    smarty模板引擎之内建函数用法_.docx

    这篇文章将详细介绍Smarty中的内建函数,特别是`foreach`、`if...else...`以及`if...elseif...elseif...else...`的使用方法。 1. **foreach函数** `foreach`用于遍历数组,无论是简单的索引数组还是关联数组,甚至...

    选择分支与循环joyoflyPPT学习教案.pptx

    嵌套的If语句增加了程序的灵活性,但同时也增加了代码的复杂性和阅读难度,因此在编写时需谨慎,避免过多的嵌套导致代码不易理解和维护。 在实际编程中,选择分支结构通常用于决策逻辑,如用户输入验证、数据处理、...

    dev_addr_lists.rar_If...

    此外,考虑到设备驱动程序的实时性和性能要求,检查过程应尽可能高效,避免全系统扫描。优化数据结构和搜索算法可以显著提升系统的整体性能。 总之,`dev_addr_lists.c`文件涉及的是设备驱动程序中的设备地址管理,...

Global site tag (gtag.js) - Google Analytics