Skip to content

第 6 章:通用模块更深

系列:软件设计的哲学 · 第 6/22 章
全书导读:00-overview.md


一句话总结

在合理范围内,更通用的模块往往更深——专用逻辑应在上层组合,而非写死在底层。


核心观点浓缩

  • 通用模块:接口表达概念(读文件、发请求),非单一业务场景
  • 专用模块常把业务规则塞进底层,接口却为特例膨胀,又浅又脆
  • 通用性↑ 通常带来复用更简单接口;但过度通用会模糊语义
  • 第 2 版强调:在「太窄」与「太宽」间找平衡,红旗是调用方仍要懂很多
  • 专用代码应靠近最了解需求变化的层(通常上层),非堆在基础设施里

关键概念 / 金句

倾向结果
合理通用read(offset, len) 服务多种调用模式
过度专用readUserProfileForLoginPage() 难以复用
过度通用execute(Operation op) 调用方不知能传什么

本章在全书中的位置

第 6 章深化第 4 章「深模块」:为何有些接口天然更深——因抽象层次更高。与第 7 章分层、第 8 章下拉复杂度共同构成模块设计三角。


个人思考与启发

文件 IO 插件若只为 STL 写死路径规则,OBJ 来了就复制粘贴改。更早抽象成「网格导出器」接口,专用格式只做 serializer,深度与扩展性同时改善。


与《程序员修炼之道》对照

  • 元程序设计(用数据/配置驱动)是通用化的一种,减少硬编码特例
  • 「易于改编」要求接口对未来变化留余地,与合理通用同源
  • 避免过早抽象:通用性应由第二、第三个用例验证,非臆想(见修炼之道「你不需要它」)

重点与注意

重点:通用性服务于接口简单 + 实现强大,不是炫技。
重点:业务特例往上层推,基础设施往下沉。
注意:三个用例前别大抽象;与 YAGNI 不矛盾。
注意:过度通用的「万能参数对象」是浅模块的新马甲。


导航第 5 章 信息隐藏与泄漏 · 下一篇:第 7 章 不同层不同抽象

基于 VitePress 强力驱动 | 记录技术与生活