编程进阶网 编程进阶网
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机的原理
  • 操作系统原理
  • 网络协议原理
  • 数据库的原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 技能之旅
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Kotlin精通
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机的原理
  • 操作系统原理
  • 网络协议原理
  • 数据库的原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 技能之旅
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Kotlin精通
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 体系建设优化

  • 代码品质工坊

    • README
      • 一、为何要做代码医院
      • 二、贯穿故事九十天
      • 三、医院三大科室
        • 一号科室急诊科
        • 二号科室影像科
        • 三号科室外科室
      • 四、三医生查房制
      • 五、病案编号系统
      • 六、专栏定位
      • 七、诊疗记录目录
        • 序篇导读
        • 急诊科五篇导航
        • 影像检验三篇
        • 外科康复四篇
        • 手册附录
      • 八、按身份学习
      • 九、每篇的收获
      • 十、写作方法论
    • 01.代码医院开院首诊
    • 02.命名与意图的战场
    • 03.函数与职责大手术
    • 04.错误与边界的防线
    • 05.条件与多态心律术
    • 06.遗留代码急救手册
    • 07.静态分析度量诊断
    • 08.测试覆盖率的真相
    • 09.技术债量化与还款
    • 10.重构十八招式详解
    • 11.测试保命术全解析
    • 12.代码审查文化建设
    • 13.新系统免疫力建设
    • 14.医生手册总结索引
    • 写作模板
  • 稳定性与可靠性

  • 工程化与运维

  • 方案设计思想

  • 性能优化实践

  • 真经
  • 代码品质工坊
杨充
2026-06-27
目录

README

# 代码品质工坊 · 代码医院

这不是又一本"讲代码整洁"的书。这是一家代码医院——十四篇诊疗记录,把《代码整洁之道》《重构》《修改代码的艺术》三本经典的骨架,融进一个团队 90 天真实故事里。初级读住院医的查房、高级读主治的查房、架构师读主任的查房,同一段病灶三种深度。


# 一、为何要做代码医院

大多数关于代码质量的书,讲的是技法:如何命名、如何抽函数、如何写测试。但真正让人痛的从来不是"我不会重命名变量",而是:

  • 我知道这段代码烂,但不知道从哪儿下手。
  • 我知道要写测试,但这段代码根本没法测。
  • 我知道有技术债,但老板不给排期。
  • 我发起了 CR,但评审全是 "lgtm" 或 "nit" 级别的意见,没人指出真正的架构问题。
  • 我是应届生/五年老兵/十年 TL,为什么读同一本经典,我们的收获天差地别?

代码质量问题很像医院里的病:同一个症状,主任、主治、住院医看到的东西不一样。所以我们干脆把它做成一家医院——三大科室、三级医生、每一份病案都有编号、每一次治疗都有康复曲线。


# 二、贯穿故事九十天

剧情梗概:一家电商公司的订单核心链路,被一个名叫 OrderService.submitOrder() 的 1247 行超级方法 长期把持。它承担了下单、库存、优惠、支付、物流、消息、统计七件事,圈复杂度 68,参数 14 个,被 89 个地方调用,无任何单元测试。
过去半年发生过 3 次线上事故:优惠券超发 42 万、库存超卖 1300 单、大促全链路雪崩。团队新任技术负责人「老陈」立下军令状:90 天内把这个订单系统重构到可维护、可测试、可扩展——同时业务不能停。
14 篇诊疗记录就是这 90 天的完整历程。

# 三、医院三大科室

                    【代码医院 · 三大科室】
                             │
        ┌────────────────────┼────────────────────┐
        │                    │                    │
   [急诊科]            [影像检验科]         [外科与康复]
   救存量代码           度量与诊断            重构与筑基
        │                    │                    │
  第 02-06 篇          第 07-09 篇          第 10-13 篇

# 一号科室急诊科

主任:老陈(后期晋升) · 主治:老陈 · 住院医:小李、小张

送来的都是"正在烧的"代码——God Class、异常吞噬、条件式失控、遗留系统改不动。急诊科的原则是"先保命、再治病"。

# 二号科室影像科

主任:沈总 · 主治:老陈 · 住院医:小李

代码得先"拍片子、抽血、做心电图",才能知道到底哪里病了。影像科负责把主观的"感觉这段代码烂"翻译成客观的度量指标——圈复杂度、覆盖率、技术债金额。

# 三号科室外科室

主任:沈总 · 主治:老陈 · 住院医:小李 + 小张

从"识别"进入"动刀"——18 种重构手法、测试兜底、CR 文化、新系统的免疫力建设。外科不只是切除病灶,更要教会团队康复。


# 四、三医生查房制

同一段病灶,从三个视角各切一刀。读者可以按自己身份选择深度,也可以"偷偷"读其它医生的部分,感受更高维度的思考。

视角 关注面 举例(同一段吞异常的代码)
🟢 住院医查房(初级 1-3 年) 单文件、几行代码内的可见问题 "把 catch(Exception e){} 改成具体异常类型,加上上下文"
🟡 主治查房(高级 3-8 年) 模块、类、接口层面的设计问题 "错误处理策略要在接口契约里明示;引入 Optional / Result 类型"
🔴 主任查房(架构师 8+ 年) 系统、团队、流程层面的根源问题 "为什么团队会形成'先跑起来再说'的文化?错误码规范该在架构层如何统一?"

关键规则:三视角不是深浅递进,而是关注面不同——住院医版独立自洽,架构师版独立自洽,任一读者都能只读自己那一层收获完整知识。


# 五、病案编号系统

本专栏所有坏味道 / 手法都用统一编号登记,读完 14 篇你会带走一份完整索引,遇到问题直接查表。

前缀 类别 编号范围 主要出没篇
N Naming · 命名类 N01-N15 第 02、03 篇
F Function · 函数类 F01-F20 第 02、03、10 篇
C Class · 类与对象 C01-C18 第 03、10 篇
E Error · 错误处理 E01-E10 第 04、11 篇
T Test · 测试类 T01-T12 第 08、11 篇
A Architecture · 架构类 A01-A15 第 09、13 篇
D Debt · 技术债类 D01-D10 第 09、12 篇
R Review · 代码审查类 R01-R08 第 12 篇

每次介绍一个坏味道都用统一病案卡片:主诉 / 检查 / 处方 / 出处 / 关联病案。14 篇读完,你有一份 100+ 条目的可检索索引。


# 六、专栏定位

维度 说明
目标读者 1-15 年工程师全覆盖——初级看住院医、高级看主治、架构师看主任
跨语言 主线 Java(承接订单案例),关键手法给 Go / Python / TypeScript 对照
与 01 卷(体系建设)的区别 01 教"性能体系怎么守",02 教"代码品质怎么建"
与 07 卷(内功)的区别 07 讲底层原理,02 讲日常战术——你今天写 PR 就用得上

# 七、诊疗记录目录

# 序篇导读

# 文章 剧情节点 核心命题
01 代码医院开院首诊 Day 0 为什么代码需要一家医院·三视角三科室走一遍

# 急诊科五篇导航

# 文章 病人 核心病症 承接经典
02 命名与意图的战场 P-001 OrderMonolith 287 处坏名字(N 系列) 《代码整洁之道》Ch2
03 函数与职责大手术 P-001 OrderMonolith 1247 行超级方法(F、C 系列) 《代码整洁之道》Ch3·Ch10
04 错误与边界的防线 P-004 PaymentGate 全 catch(Exception) 失血症(E 系列) 《代码整洁之道》Ch7
05 条件与多态心律术 P-002 CouponCalc 47 个 else if 心律不齐 《重构》Ch10·以多态取代条件
06 遗留代码急救手册 全部 无测试遗留代码安全改造五步法 《修改代码的艺术》Feathers

# 影像检验三篇

# 文章 检查项目 核心命题 承接经典
07 静态分析度量诊断 拍片子 圈复杂度/认知复杂度/耦合度的科学解读 《代码大全》Ch19-22
08 测试覆盖率的真相 抽血化验 行/分支/变异覆盖率的陷阱与真相 《单元测试的艺术》
09 技术债量化与还款 心电图 技术债的量化、四象限、还债路线图 Kruchten《技术债务》

# 外科康复四篇

# 文章 手术类型 核心命题 承接经典
10 重构十八招式详解 手术台 Fowler 18 招手法的实战演练 Fowler《重构》
11 测试保命术全解析 麻醉保命 重构前的测试兜底与安全网 《修改代码的艺术》Ch4
12 代码审查文化建设 康复训练 CR 卡点/评审礼仪/门禁自动化 Google Eng Practices
13 新系统免疫力建设 预防医学 Greenfield 项目如何从 0 建立品质免疫 《架构整洁之道》

# 手册附录

# 文章 用途
14 医生手册总结索引 三视角带走清单 + 病案编号全表 + 术式总索引
61 写作模板 全 14 篇统一写作规范

# 八、按身份学习

🟢 初级工程师(1-3 年) **推荐路径**
序 → 02(命名) → 03(函数) → 04(错误) → 11(测试保命) → 14(手册)
只看每篇的【住院医查房】+ 病案卡片,掌握"能立刻用在 PR 上"的手法
🟡 高级工程师(3-8 年) **推荐路径**
全部 14 篇顺读,重点看【主治查房】和第 05/06/09/10/13 篇
掌握"设计层面的质量、遗留代码改造、技术债量化"三大核心
🔴 架构师 / TL(8+ 年) **推荐路径**
序 → 07-09(度量) → 12-13(文化与筑基) → 14(手册)
+ 全篇的【主任查房】部分,关注"系统级、组织级、文化级"的思考

# 九、每篇的收获

一次学习结束,你会得到:

  • 📋 一份100+ 条目的病案索引——遇到烂代码直接查表定位。
  • 📈 一份可套用的"90 天重构剧本"——含每一天该做什么、卡点在哪。
  • 🔧 一份60+ 条 CR 卡点清单——不是复制别人的,是从案例里逼出来的。
  • 💰 一份技术债量化模板——用它去说服老板给你排还债的时间。
  • 🧪 一份测试金字塔搭建 SOP——从 UT 到 E2E 的完整脚手架。
  • 🎓 三份**"三医生带走清单"**——按身份对号入座的可执行动作。
  • 🧠 最重要的:一种**"看见烂代码就知道怎么下刀"的直觉**。

# 十、写作方法论

沿用 10.真经 卷首约定:

  • 禁止模糊表述,要求可证伪。
  • 所有数据有出处(复杂度、覆盖率、事故数据),所有对比有基准(before / after 定量)。
  • 跨平台对照(Java 主线 + Go/Python/TS 至少一门),不绑定单一技术栈。
  • 每篇必有真实病例、必有度量数据、必有经典书出处、必有练习题。

具体写作骨架见 61. 写作模板。


开场白:现在,让我们把镜头切到公司会议室——Day 1,早上 9 点,老陈把 OrderService.java 投在大屏上,一句话没说,全场安静了 30 秒。第一位病人已经躺在急诊室的推车上。14 篇诊疗记录,从这里开始。

下一篇 → 第 01 篇 · 代码医院开院首诊

上次更新: 2026/07/16, 11:32:10
性能预算与防劣化
01.代码医院开院首诊

← 性能预算与防劣化 01.代码医院开院首诊→

最近更新
01
audit
07-27
02
C++入门教程全章思考题汇编
07-24
03
12.技术团队建设能力
07-21
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 鄂ICP备2024073355号-1 | 鄂ICP备2024073355号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式