🧩 第六章 重用:OOP带来的软件重用和思想重用
📄 一句话概括

重用不再是【抄一段代码】,而是从一片库海里挑几个构件拼起来——实测标准库 290 个模块起步。

📝 本节和前面几节的关系

6.6 讲框架,这一节把视野放到整个生态:能拿来用的东西有多少。

一、从抄代码到拼构件

早期复用是【把那段代码抄过来】。 现在是挑几个构件装起来:容器用 collections、格式用 json、时间用 datetime。 这个变化让【认识构件】比【会写代码】更重要——写代码还是那些行,挑对了能少写几百行。

二、实测规模

标准库 290 个模块——这已经是常驻的构件群。 再往外是第三方生态:分发包少则几十、多则上千(看项目)。 关键是【它们能组合】:同一个对象可以既是 collections 的容器元素,又是 json 的输出内容。

三、生态的代价

选择变多,判断变难:同一个功能有五个库,选错要搬一次家。 质量参差:有的十年维护、有的两年没人管。 所以【会挑】比【会用】更值钱——挑的标准见 6.8 的独立性。

四、怎么建立自己的清单

别贪多:项目里能记住名字的库,通常不超过十个。 按【一件事一个库】记账:JSON 一个、HTTP 一个、日期一个。 定期回头删:三个月没用上的依赖,多半可以删掉——依赖面越小,搬家越容易。

五、动手 Demo:世界上可重用的软件构件群

数一数这台机器上有多少可复用的构件:标准库 + 已装的分发包。 两边的数量级对比,能说明【构件群】这个词的量。

import importlib.metadata as md, sys
dists = list(md.distributions())
print(len(dists))
print(len(sys.stdlib_module_names))

实跑输出:

--------------------------------------------------------------------
世界上可重用的软件构件群
--------------------------------------------------------------------

  除了标准库,还有一整个生态系统。**实测这台机器上装了多少:**

      已安装的分发包数            1 个
      能 import 的标准库模块      290 个
      合计可复用的构件群          291 个左右

      装了的包里,前几个是:
        pip

      (这是一台干净环境,只装了 pip;下面按标准库算规模)

  **注意【构件群】这个词:**它不是一个库,是一片库,彼此还能组合。
  **所以今天的重用不是【抄一段代码】,是【挑几个构件拼起来】。**
  **而挑的前提是认识它们——这就是 6.2 的类库和 6.10 的路标要解决的问题。**

实测:这台机器是干净环境,只装了 1 个分发包(pip);标准库 290 个模块。 构件群的量级由标准库保底、由第三方撑开——挑的前提是认识它们,而认识的门槛在标准库这一层。

30 秒实验

  1. 列出你项目里的依赖清单,按【一件事一个库】重新排一遍。
  2. 找三个三个月没用过的依赖,评估能不能删。

常见误区

  1. 以为库越多越强。依赖面越大,搬家越难。
  2. 以为挑库看功能就行。维护状态和独立性同样重要。
自测三问(点开对答案) 1. 复用方式发生了什么变化? —— 从【抄一段代码】变成【从库海里挑几个构件拼起来】——于是认识构件比会写代码更重要。 2. 实测这台机器上有多少构件? —— 标准库 290 个模块;这台是干净环境,第三方分发包只装了 1 个(pip)。 3. 为什么要定期删依赖? —— 依赖面越小搬家越容易;三个月没用上的依赖,多半可以删。

相关笔记