第4部分:语句

第4部分语句:把控制流目标接到顺序、条件、循环和异常状态,让分支与终止条件可预测。

学习目标

  • 能从语句目标写出顺序、分支、循环、异常和状态结果。
  • 能为每条控制流说明输入、覆盖条件、终止条件和失败路径。
  • 能通过边界与故障重放发现隐藏分支,并让另一位实践者解释同一控制流。

为什么需要这一部分

语句把意图变成执行顺序。真正难的不是记住语法,而是让读者知道条件何时成立、循环何时终止、异常如何传播,以及状态在每一步怎样变化。只测正常路径会把未覆盖的分支伪装成稳定。

先避开三个控制流误区

核心合同与操作术语

决定动作;决定因果。定义分支;约束重复;把拒绝路径接到验收。

目录节点逐项深读

第4部分 语句

本部分的阅读合同是:先声明语句目标,再画出顺序、条件和循环,最后说明异常与状态。控制流的每一条边都应能由输入触发,也应能被测试或复查。

最小可重放实现

baseline = freeze(input, version, expectedState)
trace = execute_sequence_condition_loop(baseline)
trace += execute_boundary_and_fault(baseline)
record(firstDeviation, terminalState, recovery)
reset()
assert replay(baseline) == baseline.trace

正常轨迹验证目标;边界轨迹使用空集、恰好值和最大值;故障轨迹触发异常或不满足前置条件;复位轨迹确认状态不会从上一条路径泄漏。

先预测,再操作证据实验

先预测顺序、条件、循环或异常状态改变后哪个节点会先变化,再只切换一个场景。专属面板是控制流证据链,不是编译器的完整分析。

第4部分 语句 · 证据实验

语句目标 → 顺序 → 条件 → 循环 → 异常与状态证据

固定版本、输入和观察窗口,只改变一个条件;先预测首个偏离,再用同一基线复位。

结构条目也必须连接到可复查证据标题负责定位,合同、输入、结果和复位负责裁决1语句目标先说明动作当前节点2顺序控制先后可复核3条件覆盖分支可复核4循环定义终止可复核5异常状态复查边界可复核基线:顺序、分支、循环和异常路径都对应明确的输入与结果。证据合同:输入 · 预期 · 实际 · 首个偏离 · 复位结果当前场景:正常路径

练习与答案

练习

问题 1:补齐分支。 一段代码只测试成功响应,如何设计最小边界集?

问题 2:检查循环。 如何证明一个循环不会在空输入时访问无效元素?

问题 3:处理异常。 异常抛出后共享状态仍被修改,如何复位?

术语表

名词解释

本章出现的专业名词,用大白话再讲一遍。

语句目标
语句要改变的对象、状态或可观察结果。
顺序
读取、修改和返回状态的执行先后。
条件
选择控制流路径的输入约束。
循环
包含前置条件、不变量和终止条件的重复结构。
异常状态
失败输入引发的状态、传播和恢复契约。

本页小结

可靠语句把目标、顺序、条件、循环和异常状态连成可重放控制流。正常路径只是起点;边界、故障和复位证据才能说明分支和终止条件真的成立。

资料与写作方式声明

本章以Steve McConnell, Code Complete, Second Edition权威目录界定学习范围,并结合正文列出的技术资料独立重写;不宣称复现原书正文,也不沿用原作表述。

原作版权归作者与出版社所有;本站原创教学结构与表述仅供学习交流。

讨论

评论区加载中…