`
aiwori
  • 浏览: 9296 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

简化条件判断式,少写IF/ELSE

 
阅读更多

人说过:写太多if/else的代码不是好代码。写了几年的代码,感觉这句话很有道理。如果一段代码有太多的if/else,起码有以下问题。第一阅读性差。可能自己当时看的懂,过了一段时间估计自己也看不懂了,更何况其他程序员来理解这段代码。第二维护性差:写太多的if/else,如果稍有不慎,出错几率很大,特别是当其他程序员来改这段代码,那么可能引起新的bug。第三,可能反映出你面向对象思想不深刻,有些IF/ELSE需要从整体设计上改善

下面看两个例子,希望能给你带来一点启示。看看如何减少下面代码中的if/else?

一个计算每月天数的函数:

public int getDaysOfMonth(int month) {

//一个月的天数

int days=0;

if(month==1) {

days=31;

}else if(month==2) {

days=28;

}else if(month==3) {

days=31;

}else if(month==4) {

days=30;

}else if(month==5) {

days=31;

}else if(month==6) {

days=30;

//下面继续7-12个月的if/else...

}else {

days=-1;

}

return days;

}

第二个函数:

public int getNumber(int number) {

if(number <=18) {

return 18;

}

if(18<number && number<60) {

return number;

}

if(number >60) {

return 60;

}

return 0;

}

第一个求每月天数的代码,我们可以考虑写个长度为12的数组

int[] monthDay=new int[]{31,28,31,30,31,...,31}

这样我们以月为访问索引通过month[index]可以很快拿到每个月的天数。这种方式称作表驱动法。

第二个getNumber函数,我们可以考虑使用最值函数,方式如下:

max(min(60,number),18)

在重构改善既有代码设计书上提到如何改善复杂的条件表达式:

如果你的if判断很复杂,那么你可以将部分判断抽出一个函数,取一个好的函数名,这样不仅简化了复杂的判断,也让代码更清晰。

如果代码中还存在嵌套循环,你可以把某些判断条件从嵌套中抽出来,在该条件为真时立刻返回结果。

改善代码质量不仅要做好设计,也要在实现细节上做好。如果你用心去改善你的代码,你肯定能写成质量更高的代码!

分享到:
评论

相关推荐

    IF-ELSE条件语句的翻译程序设计(LL(1)法、输出四元式)

    在"Compare"这个文件中,很可能是包含了比较操作的相关四元式或者与IF-ELSE条件判断相关的实例,这些内容可以帮助我们进一步理解IF-ELSE条件语句在实际编译器设计中的实现细节。通过学习和理解这些概念,开发者可以...

    IF-ELSE条件语句的翻译实验报告 LR方法 四元式

    在IF-ELSE条件语句的翻译中,四元式可以用来表示条件测试、分支和合并点等关键步骤,如生成`TEST`四元式进行条件判断,`BRANCH`四元式用于根据条件跳转,以及`JOIN`四元式来连接不同分支的后续代码。 在这个实验...

    IF-ELSE条件语句的翻译程序设计(递归下降法、简单优先法、LR方法、LL(1)法、输出四元式)

    在IF-ELSE条件下,可以生成如“IF cond THEN goto label1 ELSE goto label2”的四元式,其中cond是条件表达式,label1和label2分别对应于IF和ELSE分支的目标。这种方式简化了指令集架构的复杂性,使得翻译更加灵活。...

    PHP IF ELSE简化/三元一次式的使用

    总而言之,三元一次式是PHP中一个非常实用的特性,它使得条件判断的代码更加简洁,减少了编写if-else语句的需要,尤其适用于一些简单的逻辑判断。但是,编写代码时需要注意逻辑表达的清晰性,不要过度简化造成代码的...

    常用条件式批处理编写模板

    条件式批处理的关键在于掌握IF和ELSE等逻辑控制结构。以下是一些常用的条件判断语句: 1. **IF 命令**: - `%ERRORLEVEL%`:检查上一条命令的执行结果,0表示成功,非0表示失败。 - `IF %ERRORLEVEL% NEQ 0`:...

    flex4教程-as条件控制语句

    3. 三元运算符:这是一种简化的条件控制方式,通常用于一行代码内完成简单的条件判断。其格式为: ```actionscript 结果 = (条件) ? 表达式1 : 表达式2; ``` 如果条件为真,结果将是表达式1的值;否则,结果将是...

    1.2.2条件语句.doc

    在这个例子中,首先通过条件语句判断判别式的符号,以确定方程根的存在性和类型。 - 例3:重新排列输入的三个整数,使其按照从大到小的顺序排列。这个例子中,条件语句用于比较和交换变量值,直到达到排序的目的。 ...

    Vue3.x中使用JavaScript表达式 、条件判断、 计算属性和watch侦听.zip

    接下来是**条件判断**,Vue3.x提供了`v-if`和`v-else`指令来控制元素的渲染。`v-if`用于检查一个条件,只有当条件为真时,元素才会被渲染。例如,`&lt;div v-if="isLoggedIn"&gt;已登录&lt;/div&gt;`。而`v-else`则与`v-if`配合...

    语言程序设计电子与PPT学习教案.pptx

    在某些情况下,它可以简化`if...else`结构。 ### 6. 选择结构综合应用 在实际编程中,选择结构常用于解决各种问题,如判断、排序等。例如,输入三个数`a`、`b`、`c`,通过`if`语句判断并交换它们的值,以达到升序...

    PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式

    这一方法涉及将复杂的条件判断(如if-elseif-else结构)分解为多个函数,从而分离出“转辙逻辑”(switching logic)和具体的“操作细节”(details)。这样做可以提升代码的清晰度,因为每个函数都有一个明确的职责...

    c语言程序设计包云第4章选择结构程序设计.ppt

    在某些场景下,它可以替代if-else语句,简化代码。 4.6 选择结构的嵌套 一个if语句可以嵌套在另一个if语句内部,形成嵌套选择结构,以处理更复杂的条件判断。例如,可以有一个外层if检查大条件,内层if检查更具体的...

    C语言作业一选择结构.pdf

    - 条件运算符的使用,这是if-else语句的一种简化写法。 综上所述,文档中涉及到的C语言选择结构的知识点涵盖了基本的if语句使用、嵌套if结构、switch语句的使用以及三元运算符等。通过实例演示了如何在具体问题中...

    编译原理词法分析、语法分析和中间代码四元式生成

    在处理while循环和if-else语句时,四元式可以帮助简洁地表示条件判断、循环控制和条件分支。 - 对于`while`循环,中间代码可能包括一个测试条件的四元式,然后是一个跳转到循环体的四元式,接着是循环体的四元式...

    理学选择结构程序设计PPT课件.pptx

    3. 形式三:这是if-else if-else的组合,用于处理多个条件,依次检查每个表达式,直到找到为真的条件,执行相应的语句。 在使用if语句时,需要注意以下几点: - 表达式可以是逻辑表达式或关系表达式,也可以是任何...

    语言程序设计电子课件与教案PPT学习教案.pptx

    - **求解二次方程的根**:使用`if...else`判断判别式`b² - 4ac`是否大于等于0,以确定方程是否有实根。如果存在实根,计算并输出根的值。示例代码展示了如何从用户那里获取输入的系数`a`, `b`, `c`,并进行相应的...

    PHP编程.网站编程

    在上面的代码中,我们定义了一个变量`$var`,并用if/else语句进行条件判断。这是PHP中最基本的语法结构。 **PHP函数** PHP拥有丰富的内置函数库,涵盖了字符串处理、数组操作、日期时间处理、文件系统操作等多个...

    判断访问的设备类型

    另外,一些前端框架和库,如Bootstrap和jQuery Mobile,也提供了内置的功能来帮助判断设备类型,简化开发流程。 总结起来,判断访问设备类型是Web开发中的基本技能,它涉及`User-Agent`分析、CSS媒体查询以及使用...

    if-js

    if-js旨在简化条件逻辑的编写,通过函数式编程的思想来处理条件判断。它鼓励使用链式调用和表达式,使得代码更加紧凑且易于理解。这在大型项目中尤其重要,因为清晰的代码结构可以提高代码的可维护性和可读性。 **...

    uboott移植实验手册及技术文档

    实验三 移植U-Boot-1.3.1 实验 【实验目的】 了解 U-Boot-1.3.1 的代码结构,掌握其移植方法。...#else #define TACLS 0 #define TWRPH0 4 #define TWRPH1 2 #endif #if defined(CONFIG_S3C2440) ...

Global site tag (gtag.js) - Google Analytics