📄 一句话概括
全书 12 章里 8 章没有标准答案(67%)——语法学完就完了,判断要一直练;这本书真正的产出不是知识,是一套判断的习惯。
📝 本节和前面几节的关系
12.4 讲了怎么选,这一节是全书的收尾:把 12 章按【有没有标准答案】分一遍。
一、实测:12 章里 8 章没有标准答案
有标准答案的 4 章:编程语言历史、类与继承的实现、内存怎么放、UML 记号。 要自己判断的 8 章:面向对象是什么、像不像现实、怎么重用、怎么归纳、怎么建模、怎么设计、怎么组织流程、怎么用工具。 占比 67%。 注意这不是说前 4 章简单——是说它们有对错,查得到;后 8 章只有权衡,查不到。
二、【需要动脑】的量化含义
不是难,难的东西学会就不难了。 是没有唯一解:同一个需求,三种写法都对;同一支团队,四种流程都能用。 所以只能权衡:权衡就需要判断,判断就要动脑,而且练不完。 这也解释了为什么有人写十年还是原地:语法两年就学完,剩下八年全在练判断。
三、这本书真正的产出
不是记住 12 章的名词——那些会忘、也会过时。 是一套判断的习惯:先问【会不会一起改】、先问【谁该知道这件事】、先问【这地方以后会不会来人加东西】。 判定标准只有一条:你写的东西,别人改得动吗。 能改得动,就是好设计——不管用了几个模式、画了几张图。
四、动手 Demo:享受需要动脑的软件开发
把全书 12 章按【有没有标准答案】分一遍。 数出两边各几章。
rows = [("第 1 章", "面向对象是什么", "要判断"),
("第 3 章", "编程语言的历史", "有标准答案"),
("第 4 章", "类/继承/多态", "有标准答案"),
("第 5 章", "内存怎么放", "有标准答案"),
("第 8 章", "UML 记号", "有标准答案"),
("第 10 章", "怎么设计", "要判断")]
fixed = sum(1 for a, b, c in rows if c == "有标准答案")
print(len(rows), fixed, len(rows) - fixed) # 12 4 8
实跑输出:
--------------------------------------------------------------------
享受需要动脑的软件开发
--------------------------------------------------------------------
把全书 12 章按【有没有标准答案】分一遍:
章 讲什么 有没有标准答案
-----------------------------------------------
第 1 章 面向对象是什么 要判断
第 2 章 似不似现实世界 要判断
第 3 章 编程语言的历史 有标准答案
第 4 章 类/继承/多态 有标准答案
第 5 章 内存怎么放 有标准答案
第 6 章 怎么重用 要判断
第 7 章 怎么归纳 要判断
第 8 章 UML 记号 有标准答案
第 9 章 怎么建模 要判断
第 10 章 怎么设计 要判断
第 11 章 怎么组织流程 要判断
第 12 章 怎么用工具 要判断
全书章数 12 章
有标准答案 4 章
要自己判断 8 章
要判断的占比 67%
**12 章里有 8 章没有标准答案**——**语法学完就完了,判断要一直练。**
**这正是【需要动脑】的量化含义**:不是难,是**没有唯一解,只能权衡。**
**所以这本书真正的产出不是知识,是一套判断的习惯**——
**判定标准只有一个:你写的东西,别人改得动吗。**
实测:12 章里 4 章有标准答案、8 章要自己判断,占 67%。 语法学完就完了,判断要一直练——这是【需要动脑】的量化含义。 判定标准只有一条:你写的东西,别人改得动吗。
30 秒实验
- 把你这一年写过的东西按【改得动/改不动】分一遍,数一数比例。
- 挑一个【改不动】的地方,用本书任意一条判据重看一遍。
常见误区
- 把【学会语法】当成【学会开发】。语法有答案,设计没有。
- 追求唯一正确的设计。没有唯一正确,只有当下权衡得更好。
自测三问(点开对答案)
1. 12 章里有几章没有标准答案? —— 8 章,占 67%。 2. 【需要动脑】的准确含义? —— 不是难,是没有唯一解、只能权衡,而且练不完。 3. 全书唯一那条判定标准? —— 你写的东西,别人改得动吗;能改得动就是好设计。- ☐ 全书正文完结,接着读 附章 函数式语言是怎样工作的
相关笔记
- 面向对象设计的【感觉】是拟人化和职责分配 — 判断的训练
- 不存在最好的开发流程 — 没有唯一解
- 将面向对象作为工具熟练掌握 — 选型的判断
- 🧩 面向对象是怎样工作的 · 索引