课程 · 系列目录

软件设计的取舍:抽象、契约与复杂度

从一层封装的收益与代价开始,讨论接口契约、模块边界、状态、错误和重构,并用可运行的案例检查设计判断。

Hex4C59 3 分钟阅读 更新于 2026-10-17

导读 + 9 章开始阅读 →

这个系列讨论一个能运行的小程序增加功能后,代码怎样安排才能继续容易理解、容易修改。每篇围绕一个实际选择,比较它省掉了什么工作、增加了什么要求,以及什么变化出现后需要重新考虑。

系列以本地待办事项程序逐步展开:最初添加和完成任务,随后增加不同页面、失败处理、文件保存与桌面界面。第一篇用更短的版本查询比较一层函数的收益;第二篇开始围绕“完成任务”建立共同的行为约定,后续沿同一程序继续推进。

读者需要能阅读简单 JavaScript,不预设熟悉软件开发术语。各篇先解释要解决的问题和中心概念,再进入代码。篇幅用于补足案例、推理和比较,不按固定长度把一个完整问题拆碎。

当前文章 #

后续写作方向 #

篇目要回答的问题状态
10 进程与权限边界从按钮到完成任务,信息经过哪些部分,哪些请求应当拒绝?规划中

前九篇从小例子进入待办事项程序,讨论抽象、共同约定、按名称选择功能、模块边界、状态变化、等待、行为检查、分步重构与保存重读。后续将把任务接到界面请求,继续检查输入与权限边界。

后续篇目随案例调整,完成后加入阅读目录。每篇的结论限定在明确的需求和验证范围内,示例通过不代表其他项目、运行时或部署条件也已得到验证。

一起讨论

选中正文中的文字,可以针对这段内容发起讨论。

正在读取讨论…

在 GitHub 查看与管理讨论 ↗

文章讨论