有人说过:写太多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判断很复杂,那么你可以将部分判断抽出一个函数,取一个好的函数名,这样不仅简化了复杂的判断,也让代码更清晰。
如果代码中还存在嵌套循环,你可以把某些判断条件从嵌套中抽出来,在该条件为真时立刻返回结果。
改善代码质量不仅要做好设计,也要在实现细节上做好。如果你用心去改善你的代码,你肯定能写成质量更高的代码!
分享到:
相关推荐
在"Compare"这个文件中,很可能是包含了比较操作的相关四元式或者与IF-ELSE条件判断相关的实例,这些内容可以帮助我们进一步理解IF-ELSE条件语句在实际编译器设计中的实现细节。通过学习和理解这些概念,开发者可以...
在IF-ELSE条件语句的翻译中,四元式可以用来表示条件测试、分支和合并点等关键步骤,如生成`TEST`四元式进行条件判断,`BRANCH`四元式用于根据条件跳转,以及`JOIN`四元式来连接不同分支的后续代码。 在这个实验...
在IF-ELSE条件下,可以生成如“IF cond THEN goto label1 ELSE goto label2”的四元式,其中cond是条件表达式,label1和label2分别对应于IF和ELSE分支的目标。这种方式简化了指令集架构的复杂性,使得翻译更加灵活。...
总而言之,三元一次式是PHP中一个非常实用的特性,它使得条件判断的代码更加简洁,减少了编写if-else语句的需要,尤其适用于一些简单的逻辑判断。但是,编写代码时需要注意逻辑表达的清晰性,不要过度简化造成代码的...
条件式批处理的关键在于掌握IF和ELSE等逻辑控制结构。以下是一些常用的条件判断语句: 1. **IF 命令**: - `%ERRORLEVEL%`:检查上一条命令的执行结果,0表示成功,非0表示失败。 - `IF %ERRORLEVEL% NEQ 0`:...
3. 三元运算符:这是一种简化的条件控制方式,通常用于一行代码内完成简单的条件判断。其格式为: ```actionscript 结果 = (条件) ? 表达式1 : 表达式2; ``` 如果条件为真,结果将是表达式1的值;否则,结果将是...
在这个例子中,首先通过条件语句判断判别式的符号,以确定方程根的存在性和类型。 - 例3:重新排列输入的三个整数,使其按照从大到小的顺序排列。这个例子中,条件语句用于比较和交换变量值,直到达到排序的目的。 ...
接下来是**条件判断**,Vue3.x提供了`v-if`和`v-else`指令来控制元素的渲染。`v-if`用于检查一个条件,只有当条件为真时,元素才会被渲染。例如,`<div v-if="isLoggedIn">已登录</div>`。而`v-else`则与`v-if`配合...
在某些情况下,它可以简化`if...else`结构。 ### 6. 选择结构综合应用 在实际编程中,选择结构常用于解决各种问题,如判断、排序等。例如,输入三个数`a`、`b`、`c`,通过`if`语句判断并交换它们的值,以达到升序...
这一方法涉及将复杂的条件判断(如if-elseif-else结构)分解为多个函数,从而分离出“转辙逻辑”(switching logic)和具体的“操作细节”(details)。这样做可以提升代码的清晰度,因为每个函数都有一个明确的职责...
在某些场景下,它可以替代if-else语句,简化代码。 4.6 选择结构的嵌套 一个if语句可以嵌套在另一个if语句内部,形成嵌套选择结构,以处理更复杂的条件判断。例如,可以有一个外层if检查大条件,内层if检查更具体的...
- 条件运算符的使用,这是if-else语句的一种简化写法。 综上所述,文档中涉及到的C语言选择结构的知识点涵盖了基本的if语句使用、嵌套if结构、switch语句的使用以及三元运算符等。通过实例演示了如何在具体问题中...
在处理while循环和if-else语句时,四元式可以帮助简洁地表示条件判断、循环控制和条件分支。 - 对于`while`循环,中间代码可能包括一个测试条件的四元式,然后是一个跳转到循环体的四元式,接着是循环体的四元式...
3. 形式三:这是if-else if-else的组合,用于处理多个条件,依次检查每个表达式,直到找到为真的条件,执行相应的语句。 在使用if语句时,需要注意以下几点: - 表达式可以是逻辑表达式或关系表达式,也可以是任何...
- **求解二次方程的根**:使用`if...else`判断判别式`b² - 4ac`是否大于等于0,以确定方程是否有实根。如果存在实根,计算并输出根的值。示例代码展示了如何从用户那里获取输入的系数`a`, `b`, `c`,并进行相应的...
在上面的代码中,我们定义了一个变量`$var`,并用if/else语句进行条件判断。这是PHP中最基本的语法结构。 **PHP函数** PHP拥有丰富的内置函数库,涵盖了字符串处理、数组操作、日期时间处理、文件系统操作等多个...
另外,一些前端框架和库,如Bootstrap和jQuery Mobile,也提供了内置的功能来帮助判断设备类型,简化开发流程。 总结起来,判断访问设备类型是Web开发中的基本技能,它涉及`User-Agent`分析、CSS媒体查询以及使用...
if-js旨在简化条件逻辑的编写,通过函数式编程的思想来处理条件判断。它鼓励使用链式调用和表达式,使得代码更加紧凑且易于理解。这在大型项目中尤其重要,因为清晰的代码结构可以提高代码的可维护性和可读性。 **...
实验三 移植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) ...