🧩 第二章 似是而非:面向对象与现实世界
📄 一句话概括

面向对象在 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. 写一句你能落到代码的技术判断,再写一句落不回去的,对比一下。

常见误区

  1. 以为潮词都是假的。底下确实有真东西。
  2. 以为听着顺就是对的。落不回代码的都不是技术判断。
自测三问(点开对答案) 1. 面向对象为什么会成为潮词? —— 它许诺软件好改,正好对上所有老板都痛的事——技术一旦对上普遍焦虑,就会变成潮词。 2. 怎么判断一句话是不是技术判断? —— 把它落回代码:能指出哪个类、哪个方法、哪条继承线的,是;指不出的,是态度。 3. 该不该因为它是潮词就反着来? —— 不该。潮词底下确实有真东西,分辨的办法是落回代码,而不是一概否定。

相关笔记