一般控制问题
要点:
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 用括号使布尔表达式更清晰
- 浏览: 115917 次
- 性别:
- 来自: 天津
相关推荐
Java运算符和表达式是编程基础中的重要组成部分,它们用于操控和组合变量,形成复杂的逻辑。在Java中,运算符大致分为六类:算术运算符、...熟悉和掌握Java运算符和表达式,能有效提升编程效率,使代码更简洁、高效。
### Java基础大全-笔记 #### 一、基础知识 ##### 1. JVM、JRE和JDK的区别 - **JVM (Java Virtual Machine)**: Java虚拟机,是Java平台的一个核心部分,它负责解释并执行Java字节码。JVM的设计确保了Java程序能够...
这篇学习笔记将深入探讨JavaScript正则表达式的概念、语法和实际应用。 一、正则表达式基础 1. 创建正则表达式: - 字面量表示法:`/pattern/flags` - 构造函数:`new RegExp('pattern', 'flags')` 2. 常见的...
- **方法值和方法表达式**: 详细解释了如何使用方法值和方法表达式。 - **接口**: 定义了一个类型的契约,即该类型应该具有的行为。 #### 接口 - **接口是合约**: 详细解释接口的概念及其作用。 - **接口类型**: ...
`if`语句是最基本的条件判断结构,它允许我们基于一个布尔表达式的值来决定是否执行特定的代码块。语法如下: ```java if (condition) { // 代码块,当condition为真时执行 } ``` 这里,`condition`是一个...
多重if语法的格式为:if(布尔表达式1){//代码块1}else if(布尔表达式2){//代码块2}else if(布尔表达式3){//代码块3}else{//代码块4}。执行流程为:表达式1为true,则执行代码块1,再退出整个结构。表达式2为true,则...
在这里,`condition` 是一个布尔表达式,如果这个表达式的值为 true,那么循环体内的代码块会被执行。然后,再次检查条件,如果仍然为 true,代码块将继续执行;反之,如果条件变为 false,循环将终止。由于循环条件...
### Python学习笔记与简明教程知识点汇总 #### Python 第1课:安装 - **知识点**: - Python 安装包的选择与下载。 - 安装过程中注意事项,如添加环境变量等。 - 验证Python是否安装成功的方法。 #### Python ...
《编写可读代码的艺术》是一本致力于提升代码可读性的书籍,强调了代码可读性在软件工程中的重要性。代码可读性不仅关乎程序员之间的沟通效率,还直接影响到软件的维护成本。以下是对书中一些核心观点的提炼: 1. *...
### C# 入门学习笔记和开发环境安装 #### 一、简介 C#(读作C Sharp)是由微软开发的一种强大的、面向对象的编程语言。它融合了C++的强大特性和Visual Basic的易用性,是.NET框架的核心编程语言之一。C#的设计目的...
1. `while`循环:`while`循环会持续执行代码块,只要它的布尔表达式为真。一旦布尔表达式变为假,循环就会停止。你可以通过`break`语句提前退出循环,或者使用`continue`语句跳过当前循环的剩余部分,直接进入下一次...
外部JavaScript文件可以通过`<script src="path/to/file.js"></script>`引用,这种方式有利于代码的复用和管理,特别是在大型项目中,将所有JavaScript代码放在单独的.js文件中,能有效减少页面加载时间,并提高代码...
JavaScript中的正则表达式是处理字符串的强大工具,用于匹配、替换、分割文本。它们在编程中扮演着不可或缺的角色,尤其在验证用户输入、提取数据、格式化内容等方面。以下是对正则表达式的基础知识和常见用法的详细...
【Lua学习笔记之表达式】 在Lua编程语言中,表达式是构成程序的基本元素,用于表示计算或逻辑操作。表达式的结果可以是一个值,也可以是一个布尔值,这取决于执行的操作。下面我们将深入探讨Lua中的各种表达式类型...
本篇学习笔记将详细解析Java中的数据类型转换及其相关的知识点。 首先,我们需要了解Java的基本数据类型,它们分为两大类:整型和浮点型。整型包括byte、short、int和long,浮点型包括float和double。此外,还有...
- **运算符优先级**:先执行括号内的表达式,接着是乘除模运算,再后是加减运算,最后是关系和逻辑运算。 - **==与equals的区别**:`==`用于比较两个基本类型变量或引用类型变量的地址;`equals()`用于比较两个对象...
BoolAnalyze.cpp 文件很可能是用C++语言实现的布尔表达式LR分析器的核心代码。在该代码中,可能包含了词法分析、语法分析和语义分析的逻辑。词法分析负责将输入的字符串分解成一个个的符号(token),语法分析使用LR...