📄 一句话概括
面向对象在 1990 年代成了潮词;潮词的定义会漂移,对抗办法只有一个:每说一次就落回代码指一次。
📝 本节和前面几节的关系
正文九节讲完了【似与不似】,这个专栏换个角度:这个词是怎么变成潮词的,变成潮词之后出了什么事。
一、潮词的形成
1990 年代,面向对象从一门技术变成一句口号。到处都在讲,包括不讲代码的场合。 原因不难理解:它许诺的是【软件好改】——而软件难改是所有老板都痛的事。 一个技术一旦对上了一个普遍焦虑,它就会变成潮词。
二、术语通胀
实测四句常见说法,数一数能落到具体机制上的有几处: 【我们要全面面向对象】——0 处。 【这个模块用了三个类】——1 处。 【这套架构是对象化的】——0 处。 【Order.cancel 只改状态】——1 处。 四句话里只有两句话能落到机制上,另外两句什么都没说。
三、怎么对抗漂移
办法很土,但有效:每说一次,就把它落回代码里指一次。 说【面向对象】,就指出哪个类、哪个方法、哪条继承线。 说【对象化】,就指出状态在哪、行为在哪。 落不回去的,就不是技术判断,是态度。
四、一个提醒
别因为它是潮词就反着来。潮词底下确实有真东西——这本书讲的都是。 也别因为它是潮词就照单全收。分辨的办法就是把它落回代码。 这也是全书坚持讲 What 和 Why 的原因(1.8):讲清了是什么,口号就骗不了你。
五、动手 Demo:成为潮词的面向对象
给四句常见说法数一数:能落到具体机制上的有几处。 落不回去的,就不是技术判断。
claims = ["我们要全面面向对象", "这个模块用了三个类",
"这套架构是对象化的", "Order.cancel 只改状态"]
MECH = ["类", "方法", "字段", "状态", "接口", "继承"]
ok = 0
for s in claims:
hit = sum(1 for m in MECH if m in s)
print(s, hit, "能验证" if hit else "不能")
ok += 1 if hit else 0
print("能验证", ok, "句,共", len(claims), "句")
实跑输出:
--------------------------------------------------------------------
成为潮词的面向对象
--------------------------------------------------------------------
专栏【对象的另一面】讲背景:**面向对象在 1990 年代成了一个潮词。**
潮词的特点是——**人人都说,但说的往往不是同一件事。**
实测一次【术语通胀】:给四句话数一数,能落到具体机制上的有几处。
说法 机制词 能验证吗
----------------------------------------------
我们要全面面向对象 0 处 不能
这个模块用了三个类 1 处 能
这套架构是对象化的 0 处 不能
Order.cancel 只改状态 1 处 能
实测:四句话里只有 **2 句**能落到机制上,另外 **2 句**什么都没说。
**【全面面向对象】和【架构是对象化的】听着像结论,其实只是态度。**
这也是本书坚持讲 What 和 Why 的原因(1.8):
**一个词一旦变成潮词,它的定义就开始漂移。**
对抗漂移的办法只有一个:**每说一次,就把它落回代码里指一次。**
落不回去的,就不是技术判断,是口号。
实测:四句里只有 2 句能落到机制上,另外 2 句什么都没说。 【全面面向对象】和【架构是对象化的】听着像结论,其实只是态度。
30 秒实验
- 回想一次你听过的【全面某某化】的说法,试着把它落回具体机制。
- 写一句你能落到代码的技术判断,再写一句落不回去的,对比一下。
常见误区
- 以为潮词都是假的。底下确实有真东西。
- 以为听着顺就是对的。落不回代码的都不是技术判断。
自测三问(点开对答案)
1. 面向对象为什么会成为潮词? —— 它许诺软件好改,正好对上所有老板都痛的事——技术一旦对上普遍焦虑,就会变成潮词。 2. 怎么判断一句话是不是技术判断? —— 把它落回代码:能指出哪个类、哪个方法、哪条继承线的,是;指不出的,是态度。 3. 该不该因为它是潮词就反着来? —— 不该。潮词底下确实有真东西,分辨的办法是落回代码,而不是一概否定。- ☐ 下一章(第三章 理解OOP:编程语言的历史)
相关笔记
- 与现实世界的相似增大了可能性 — 正文收束
- 重点讲解【是什么】和【为什么】 — 对抗漂移的方法
- ⚙️ 程序是怎样跑起来的(第3版) · 索引 — 同系列的机制课
- 🧩 面向对象是怎样工作的 · 索引