`

代码大全-读书笔记(布尔表达式)

阅读更多

一般控制问题
要点
1 使用布尔表达式简单可读,非常有助于提高你的代码质量
2 深层次的嵌套似的子程序变得难以理解,所庆幸的是你可以相对容易的避免这么做
3 结构化编程是一种简单并且仍然适用的思想:你可以通过把顺序、选择和循环三者组合起来而开发出任何程序
4 将复杂度降低到最低水平是编写高质量代码的关键

如何度量复杂度
1 从1开始,一直往下通过程序
2 一旦遇到以下关键字或者同类的词就加1:
if while repeat for and or
3 给case语句中每一种情况都加1
计算出决策点的数量以后,你就可以得到的数值分析你写的子程序的复杂度了:
0-5子程序可能还不错
6-10得想办法简化子程序了
10+ 把子程序的某一部分拆成另一个子程序并调用它
把子程序的一部分提取成另一个子程序,不会降低整个程序的复杂度,只是把决策点移到其他地方。
但这样做可以降低你在同一时间必须关注的复杂度的水平。由于重点是要降低你需要在头脑中同时考虑
项目的数量,所以降低一个给定子程序的复杂度是有价值的。
10个决策点的上限不是绝对的。应该把决策点的数量当做一个警示,该警示说明某个子程序可能需要重新设计了。
不要死守这个规则。一条情况很多的case语句可能包含超过10个元素,如果硬拆它可能是愚蠢的,这取决于该case语句的用途。

使用true和false做布尔判断
在布尔表达式中应该用标识符true和false,而不要用0和1等数值。
简化复杂的表达式
1 拆分复杂的判断并引入新的布尔变量
与其写一个庞大的、具有很多项的复杂判断,还不如把中间结果赋给变量,让你可以执行一个更简单的判断。
2 把复杂的表达式做成布尔函数
如果某项 判断需要重复做,或者会搅乱对程序主要流程的理解,那么可以把该判断的代码提成一个函数,
然后判断该函数的返回值。
3 编写肯定形式的布尔表达式
4 用括号使布尔表达式更清晰

分享到:
评论

相关推荐

    Python学习笔记(干货) 中文PDF完整版.pdf

    3.3 布尔类型-bool 3.4 字符串类型-str 4、Python中的常见运算符 4.1 算术运算符 4.2 关系运算符 4.3 逻辑运算符 4.4 位运算符 4.5 成员运算符 4.6 身份运算符 5、Python中的分支结构 5.1 单向分支-if语句...

    Python字符串与正则表达式学习笔记

    正则表达式3.1 正则表达式基础知识3.2 正则表达式实例 1. 数值与布尔型 数值类型 整型int 浮点型float 布尔型 True False # 查看数据类型用type() a = 1 b = 1.1 c = True d = False print(type(a),type(b),type(c)...

    Python学习笔记(干货) 中文PDF完整版【太全了,自学好料】

    3.3 布尔类型-bool 3.4 字符串类型-str 4、Python中的常见运算符 4.1 算术运算符 4.2 关系运算符 4.3 逻辑运算符 4.4 位运算符 4.5 成员运算符 4.6 身份运算符 5、Python中的分支结构 5.1 单向分支-if语句 5.2 双向...

    JavaScript笔记

    |--布尔值 + 布尔值:布尔值转换为数值1或0 7.数据类型转换函数 :(方法前不需要对象调用的:全局函数) |--toString():转换成字符串。所有数据类型均可转换为 string 类型; |--parseInt():强制转换成整数。...

    JQuery1.3笔记.txt

    $("元素名称").clone(布尔表达式) 当布尔表达式为真时,克隆元素(无参时,当作true处理) $("元素名称").empty() 将该元素的内容设置为空 $("元素名称").insertAfter(content); 将该元素插入到content之后 $("元素...

    quine-mccluskeyjs:Quine-McCluskeyJS 是用于布尔代数约简的 Quine McCluskey 方法的 Javascript 版本

    换句话说,这可以帮助您减少逻辑表达式(布尔代数)。 版本 0.9.5 地位 API不稳定! qm.js正在被重写。 如何使用 简单的方法: qm.simplify(inputs, expression); // returns one simplified expression. 简单...

    精髓Oralcle讲课笔记

    5、--任何含有空值的数学表达式,最后的计算结果都是空值。 6、select ename||sal from emp; --(将sal的查询结果转化为字符串,与ename连接到一起,相当于Java中的字符串连接) 7、select ename||'afasjkj' from...

    java8源码-java8:java8笔记和代码示例

    java8 源码 java8 java8 note and code example java8新特性 ...表示一个设计类型T的布尔表达式。 判断 @FunctionalInterface public interface Predicate { boolean test(T t); } Consumer 接受泛型T的

    FreeMark学习笔记

    4,插值结果为布尔值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子: ${foo?string("yes", "no")} 输出结果是: yes 2.2 数字格式化插值 ...

    google C++ 风格指南 - 中文版

    8.9. 布尔表达式 8.10. 函数返回值 8.11. 变量及数组初始化 8.12. 预处理指令 8.13. 类格式 8.14. 初始化列表 8.15. 名字空间格式化 8.16. 水平留白 8.17. 垂直留白 译者 (YuleFox) 笔记 9. 规则特例 9.1....

    PHP课程笔记

    if(条件表达式1,结果true和false) { 执行代码1; }else if(条件2) { 执行代码2; }else if(条件3) { 执行代码3; }else { 默认执行的执行代码; } switch多分支结构 switch(变量名称) { case 值1: 执行代码1; ...

    整理Javascript基础语法学习笔记

    1、什么是变量 字面意思:变量是可变的量; 编程角度:变量是用于存储某种/某些数值的存储器。我们可以把变量看做一个盒子,盒子用来存放物品,物品可以是衣服、玩具、水果...布尔表达式:2>3 num==5 num<60 //编

    python基础学习day03.txt

    布尔运算 not and(与) or(或) x and y x or y 一元运算符 + (正号) - (负号) 条件表达式 1 + 2 if 5 > 6 else 4 + 5 pass 语句 pow 函数 x ** y 隐式换行 () [] {} day03笔记 字符串 str 作用 用来...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    python第二天笔记.docx

    整数、浮点型、布尔型、字符串型 运算符:加+、减 -乘 * 浮点数除法:/ 整数除法:// 模(取余):% 幂:** 使用divmod()函数可以同时得到商和余数。 使用int()进行类型转换: 1. 浮点数直接舍去小数部分。如int(9...

    Java学习笔记-个人整理的

    {1.4.5}Boolean 布尔值}{25}{subsection.1.4.5} {1.5}基本类型变量的初始值}{26}{section.1.5} {1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增...

    QT学习之路2 (1~82篇)

    51. 布尔表达式树模型 52. 使用拖放 53. 自定义拖放数据 54. 剪贴板 55. 数据库操作 56. 使用模型操作数据库 57. 可视化显示数据库数据 58. 编辑数据库外键 59. 使用流处理 XML 60. 使用 DOM 处理 XML 61. 使用 SAX ...

    整理后java开发全套达内学习笔记(含练习)

    boolean (关键字) 逻辑的, 布尔型 call n.v.调用; 呼叫; [kɒ:l] circumstance n.事件(环境,状况) ['sә:kәmstәns] crash n.崩溃,破碎 [kræʃ] cohesion 内聚,黏聚,结合 [kәu'hi:ʒәn] (a class is ...

    【分享:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    4.9.1. 改变默认的布尔逻辑 11 4.9.2. 不需要分词 12 4.9.3. 设置坡度值,支持FuzzyQuery 12 4.9.4. 设置通配符,支持WildcardQuery 12 4.9.5. 查找指定的Field 12 4.9.6. 范围的查找,支持RangeQuery 13 4.9.7. 现在...

    intro-programming-python-jun-2018:2018年6月的Python编程入门研讨会资料

    话题以下是每天将讨论的主题的概述:第一天为什么选择Python 运行Python Python作为计算器变数弦乐种类索引和切片清单如果陈述布尔值和表达式第二天朱皮特循环-进行,通过,同时,范围,中断,继续辞典元组套职能第2...

Global site tag (gtag.js) - Google Analytics