布尔表达式 | 说明 |
---|---|
用true和false做布尔判断 | 而非0或1 |
简化复杂的表达式 | 拆分复杂的判断并引入新的布尔变量 把复杂的表达式做成布尔函数 用决策表代替复杂的条件 |
编写肯定形式的布尔表达式 | 狄摩根定理简化否定的布尔判断 |
用括号使布尔表达式更清晰 | 计数使括号对称 |
理解布尔表达式如何求值 | 短路、惰性 |
按照数轴的顺序编写数值表达式 | MIN_ELEMENTS <= i and i <= MAX_ELEMENTS i < MIN_ELEMENTS or MAX_ELEMENTS > i |
与0比较的原则 | 隐式的比较逻辑:while( !done ) 把数和 0比较:while( balance != 0 ) 在C中显示的比较字符和零终止符:while( *charPtr != ‘\0’ ) 把指针和NULL比较:while( bufferPtr != NULL ) |
布尔表达式常见的问题 | 在C家族语言中,应该把常量放在比较的左端 |
驯服危险的深层嵌套 | 说明 |
---|---|
重复检测条件中的某一部分来简化嵌套的 if 语句 | 使用一个更复杂的判断,作为减少嵌套层次的代价 |
用Break块来简化嵌套 if | do{ if(intputStatus != OK){ break; } if(!done){ break; } }while(False) |
把嵌套 if 转换成一组 if - then - else 语句 | |
把嵌套 if 转换成 case 语句 | |
把深层嵌套的代码抽取出出来放进单独的子程序 | |
使用一种更面向对象的方法 | |
用状态变量重写代码 | |
用防卫子句退出子程序 | 使代码主要路径更为清晰 |
使用异常 | |
重新设计深层嵌套的代码 |
结构化编程 | 说明 |
---|---|
结构化编程 | 应用程序应该只采用单入单出的控制结构,单入单出的控制结构指的就是一个代码块, 它只能从一个位置开始,并且只能结束语与一个位置 |
结构化编程的3个组成部分 | 顺序、选择、迭代(循环) |
降低复杂度的一般原则 | 说明 |
---|---|
如何度量复杂度 | Tom McCabe决策点 |
Tom McCabe决策点 | 从1开始,一直往下通过程序 一旦遇到以下关键字,或者同类的词就加1: if、while、repeat、for、and、or 给 case 语句中的每一种情况都加 1 |
if ( ( ( status = Success) and done ) or ( not done and ( numLines >= maxLines ) ) ) then | 从1开始,if得2,and得3,or得4,and得5 |
处理复杂度的度量结果 | 0-5:子程序可能还不错 6-10:得想办法简化子程序 10+:把子程序的某一部分拆分成另一个子程序并调用它 |