🧩 第七章 化为通用的归纳整理法的面向对象
📄 一句话概括

【面向对象】在书里有两个意思:编程技术和归纳整理法——实测八句话干净地分成 4 句/3 句两堆,只 1 句两边都沾,混乱就出在这一句。

📝 本节和前面几节的关系

7.3 说这套方法【通用】,通用立刻带来一个副作用:同一个词被用在两个领域,就开始吵架。

一、两个含义分别是什么

含义一(编程技术):类、方法、继承、接口、多态——代码里能看见的结构。 含义二(归纳整理法):职责、岗位、流程、分工——组织里能看见的安排。 两个含义共用【面向对象】这个词,是因为后者先于前者、前者从后者借来了思路。

二、实测:八句话分成两堆

技术词出现、组织词不出现 → 判为编程技术,实测 4 句。 组织词出现、技术词不出现 → 判为归纳整理法,实测 3 句。 两边都有 → 判为两边都沾,实测 1 句(这个模块的职责应该挪到另一个类)。 一句都判不出的 0 句——说明这八句话确实各自有归属。

三、混乱出在哪一句

出在两边都沾的那一句:它同时提到【模块/类】和【职责】。 更常见的一句是【这个设计不面向对象】——到底在说代码结构,还是在说分工方式? 不追问,就会各说各话:一个人讲的是继承链,另一个人讲的是岗位重叠。 所以 7.5 的第一件事就是:先问清你说的是哪一半。

四、为什么这个词会被两用

因为软件开发本身就是在组织一堆对象干活,跟公司组织人干活是同构的。 同构带来方便:一个词就能沟通两边。 同构也带来风险:说完没人追问,两边各自理解,这就是 1.6 说的【滥用比喻引起混乱】的升级版。

五、动手 Demo:两种含义引起混乱

准备 8 句日常说法,用两串关键词自动判归属。 看能不能干净地分成两堆、以及哪一句卡在中间。

TECH = ["类", "方法", "继承", "接口", "多态", "内存", "重载"]
ORG  = ["职责", "岗位", "流程", "分工", "组织", "业务", "部门"]
claims = [
    "这段代码用三个类实现了订单",
    "这个模块的职责应该挪到另一个类",
    "我们的开发流程本身也该面向对象",
    "部门的分工要按业务来划",
]
for c in claims:
    t = sum(1 for k in TECH if k in c)
    o = sum(1 for k in ORG if k in c)
    print(c, t, o, "两边都沾" if t and o else ("技术" if t else "整理法"))

实跑输出:

--------------------------------------------------------------------
两种含义引起混乱
--------------------------------------------------------------------

  【面向对象】在书里有两个意思,**混着用就会吵起来。**实测八句话各属哪边:

  说法                               技术词     组织词     判为
  --------------------------------------------------------------------
  这段代码用三个类实现了订单         1          0          编程技术
  这个模块的职责应该挪到另一个类     1          1          两边都沾
  要加新功能就得改这条继承链         1          0          编程技术
  我们的开发流程本身也该面向对象     0          1          归纳整理法
  这个接口定义得太宽了               1          0          编程技术
  岗位之间的职责不能重叠             0          2          归纳整理法
  多态让调用方不用判断类型           2          0          编程技术
  部门的分工要按业务来划             0          3          归纳整理法

      判为编程技术                4 句
      判为归纳整理法              3 句
      两边都沾                    1 句
      一句都判不出                0 句

  **实测八句话干净地分成了两堆**——说明这两个含义确实是两件事。
  **混乱出在【同一句里两边都沾】的时候**:比如【这个设计不面向对象】——
  **到底是在说代码结构,还是在说分工方式?不追问,就会各说各话。**

实测:编程技术 4 句、归纳整理法 3 句、两边都沾 1 句、判不出 0 句。 八句话干净地分成两堆,说明这两个含义确实是两件事,不是同一个词的两种说法。 危险的不是分得开的,是那句两边都沾的——它能把一整场讨论带偏。

30 秒实验

  1. 回忆一次你听过的【这个设计不面向对象】,补一句:他说的到底是哪一半。
  2. 把你项目里的争议点按技术/组织两栏归一次类。

常见误区

  1. 以为两个含义是一回事。一个是代码结构,一个是分工方式。
  2. 以为混用只是措辞不严。它会让两个人的讨论完全错开。
自测三问(点开对答案) 1. 两个含义分别是什么? —— 编程技术(类、继承、多态等代码里看得见的结构)和归纳整理法(职责、岗位、流程等组织里的安排)。 2. 实测八句话怎么分布? —— 编程技术 4 句、归纳整理法 3 句、两边都沾 1 句、判不出 0 句。 3. 混乱为什么集中在【两边都沾】那一句? —— 因为它同时提到代码结构和分工方式,不追问就各说各话——一个讲继承链,一个讲岗位重叠。

相关笔记