2026三掌柜赠书活动第四十九期 代码整洁之道(第2版)

目录

前言

从参与门槛降低,到维护队列爆满

关于《代码整洁之道(第2版)》

编辑推荐

内容简介

作者简介

图书目录

《代码整洁之道(第2版)》全书速览

结束语


前言

如今AI编程工具全面普及,Copilot、各类AI代码助手让开发效率大幅提升。从前需要反复打磨、逐行编写的代码,现在几秒就能批量生成。但很多开发者都会发现一个奇怪的现象:写代码的门槛变低了,项目维护的压力却越来越大。AI生成的代码常常冗余杂乱、命名混乱、格式不统一、缺乏规范逻辑,短期看似提升了开发速度,长期却会埋下无数隐患:代码可读性差、耦合严重、Bug频发、迭代困难,团队接手、项目重构更是噩梦。在AI快速出码的时代,会写代码不再是核心能力,写出整洁、规范、可维护、可迭代的高质量代码,才是开发者的核心竞争力。正因如此,接下来本文就来详细介绍如何适配当下AI开发场景,重新定义新时代的编码规范,帮开发者破解“AI写码快、维护巨累”的行业困境。

从参与门槛降低,到维护队列爆满

7月11日,英国《金融时报》发表文章“Who cleans up after the vibe-coding party?”,将目光投向一个正在开源社区蔓延的新问题:生成式 AI 降低了写代码、提 issue、提交补丁的门槛,却没有同步降低维护者审查、复现、测试和长期维护的成本。这不是“AI 写得好不好”的问题,而是软件协作的瓶颈正在发生转移。

过去,向一个成熟开源项目提交代码,通常要先阅读文档、理解架构、搭建本地环境、定位问题、写出修改、补齐测试,再等待维护者审查。这个过程并不轻松,但也正因为门槛存在,提交者往往已经为自己的贡献做过一轮基本筛选。现在,情况变了。

借助生成式 AI,一个并不熟悉项目上下文的人也能迅速生成完整的 bug 报告、修复建议,甚至是一份能通过基础编译的拉取请求。代码片段变得廉价,提交动作变得轻巧;但它们是否真正解决了问题、有没有破坏边界条件、是否符合项目已有的设计取舍、未来由谁来维护,仍然需要人来判断。

关于《代码整洁之道(第2版)》

接下来给大家推荐一本关于代码整洁的书籍,这是一本关于打磨高质量编码规范的干货图书,一经上市就登上了当当“计算机与互联网”图书排行榜前列。本书从编码规范、代码设计原则剖析讲起到项目开发实战技巧,助开发者在日常软件开发实战工作中高效写好整洁代码!另外,关注本文博主,点赞+收藏本文,且在本文评论区评论“入手代码整洁之道”,将选取三名幸运读者送出纸质版《代码整洁之道(第2版)》一本,截止时间:2026.09.30。入手《代码整洁之道(第2版)》传送门: 京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物! 或者 《代码整洁之道(第2版)》([美] 罗伯特?C. 马丁(Robert C. Martin))【简介_书评_在线阅读】 - 当当图书 ,个人觉得这本书非常的不错,是一本不可多得的好书,值得拥有去学习。

编辑推荐

软件大师经典畅销书的全面升级版,结合AI编程的发展,融入了最新行业洞察与技术趋势。

核心原则覆盖Java、JavaScript、Go、Python、Clojure、C#、C等多种主流编程语言,已经做到通用适配。

包含大量代码改造案例研究,提供可直接落地的重构、测试、依赖管理策略,兼具指导性与实操性。

从基础编码规范到高阶架构设计,从技术技能到职业伦理,满足不同经验层级开发者的需求。

新增AI工具应用、现代测试实践等内容,贴合当前软件开发场景,助力提升开发效率与代码质量。

前一版本被大量行业从业者评为 “职业生涯中最具影响力的必读书籍”,高口碑背书。

内容简介

本书系统阐述了编写高质量软件的核心原则与实践。

全书分为“代码”“设计”“架构”“匠艺”4个部分,从基础命名、函数、测试准则,到设计的 SOLID原则、组件原则、并发编程、架构边界,直至程序员的职业素养,构建了完整的软件质量知识体系。本书融合了作者近年来的新思考,新增了对 AI 辅助编程的探讨,强调在新时代下经典原则的持续价值。本书包含大量代码示例与重构案例,旨在帮助读者掌握构建易理解、易维护、易扩展代码的具体方法,适合所有致力于提升代码质量的软件开发人员、架构师、技术负责人以及计算机相关专业学生阅读参考。

作者简介

罗伯特·C. 马丁(Robert C. Martin),世界级软件开发大师,设计模式和敏捷开发先驱,被后辈程序员尊称为“鲍勃大叔”。他自1970年起从事软件开发工作,是Uncle Bob Consulting公司的创始人,并与儿子迈卡·马丁(Micah Martin)共同创立了Clean Coders公司。他在各类期刊和博客上发表了数百篇文章,并常受邀在国际会议上发表主题演讲,著有《敏捷软件开发》(Agile Software Development)、《代码整洁之道》(Clean Code)、《代码整洁之道:程序员的职业素养》(The Clean Coder)、《整洁架构之道》(Clean Architecture)、《敏捷整洁之道》(Clean Agile)、《匠艺整洁之道》(Clean Craftsmanship)、《函数式设计》(Functional Design)和《我们程序员》(We, Programmers)等多部经典著作。他曾担任C++ Report主编3年,并且是敏捷联盟的首任主席。

译者:

韩磊,增强现实领域专家,新媒体和社区运营专家,技术图书著译者。曾任CSDN及《程序员》杂志总编辑、原广东二十一世纪传媒股份有限公司新媒体事业部总经理、亮风台(上海)信息科技有限公司产研副总裁等职。曾独立翻译《梦断代码》《C#编程风格》《代码整洁之道》《Unix传奇:历史与回忆》《匠艺整洁之道》等多部技术著作,并合著《网络媒体教程》,合译《Beginning C# Objects:概念到代码》《整洁代码的艺术》。

图书目录

第 1 章 整洁的代码 ........................................ 1

1.1 要有代码 ........................................... 2

1.2 烂代码 ............................................... 2

1.2.1 态度 ....................................... 3

1.2.2 难题 ....................................... 4

1.3 整洁代码的艺术 ............................... 4

什么是整洁的代码 ........................... 5

1.4 综述 ................................................... 6

1.4.1 代码为什么要整洁 ............... 6

1.4.2 生产力 .................................. 7

1.4.3 宜居性 .................................. 9

1.5 读比写多 ......................................... 10

1.6 童子军军规 ..................................... 11

第一部分 代 码

第 2 章 清洁那些代码! .............................. 13

2.1 清洁过程 ......................................... 21

2.2 小结 ................................................. 26

2.3 附记:未来的鲍勃体验 Grok3 ...... 26

2.4 附记小结 ......................................... 28

第 3 章 首要原则 .......................................... 29

3.1 一切都要短小、命名得当、组织有序且排序合理 ............................. 29

函数 ................................................. 30

3.2 更明显的例子 ................................. 31

独立部署 ......................................... 48

3.3 最后的思考 ..................................... 49

第 4 章 有意义的名称 .................................. 50

4.1 使用表意明确的名称 ..................... 51

4.1.1 构建命名体系 ..................... 51

4.1.2 避免误导 ............................. 53

4.1.3 做有意义的区分 ................. 53

4.1.4 使用读得出来的名称 ......... 54

4.1.5 使用可搜索的名称 ............. 55

4.1.6 使用长度适宜的名称 ......... 56

4.1.7 避免使用编码..................... 57

4.1.8 使用恰当的词性 ................. 58

4.1.9 考虑关键词参数 ................. 59

4.1.10 别玩儿梗 .......................... 59

4.1.11 每个概念对应一个词 ....... 60

4.1.12 使用源自解决方案领域的名称 .................................. 60

4.1.13 使用源自所涉问题领域的名称 .................................. 60

4.1.14 添加有意义的上下文 ....... 61

4.1.15 不要添加没用的上下文 .................................. 62

4.2 小结 ................................................. 63

第 5 章 注释 .................................................. 64

5.1 弥补失败 ......................................... 64

5.1.1 隐藏或被遮掩的注释 ......... 65

5.1.2 撒谎的注释 ........................ 65

5.1.3 过于细节化的注释 ............. 66

5.1.4 注释不能美化烂代码 ......... 66

5.1.5 用代码阐释意图 ................. 66

5.2 好注释 ............................................. 67

5.2.1 法律信息 ............................. 67

5.2.2 信息量充足的注释 ............. 67

5.2.3 解释意图 ............................. 68

5.2.4 警示后果 ............................. 69

5.2.5 强调 ..................................... 70

5.2.6 公共 API中的Javadoc及同类文档 ............................. 70

5.3 烂注释 ............................................. 70

5.3.1 喃喃自语 ............................. 71

5.3.2 多余的注释 ......................... 71

5.3.3 误导性注释 ......................... 72

5.3.4 冗余和不精确 ..................... 72

5.3.5 循规式注释 ......................... 74

5.3.6 日志式注释 ......................... 75

5.3.7 噪声注释 ............................. 75

5.3.8 可怕的噪声 ......................... 77

5.3.9 TODO 注释 .......................... 77

5.3.10 能用函数或变量就不用注释 ................................... 78

5.3.11 位置标记 ........................... 78

5.3.12 归属与署名 ....................... 78

5.3.13 被注释掉的代码 ............... 78

5.3.14 HTML 注释 ....................... 79

5.3.15 非本地信息 ....................... 80

5.3.16 信息过多 ........................... 80

5.3.17 不明显的关联 ................... 80

5.3.18 函数头部注释 ................... 81

5.3.19 非公共代码中的Javadoc .............................. 81

5.3.20 示例 ................................... 81

5.4 小结 ................................................. 84

第 6 章 规范代码格式 .................................. 85

6.1 规范代码格式的目的 ..................... 86

6.2 纵向格式 ......................................... 86

6.2.1 概念间的纵向留白 ............. 87

6.2.2 纵向紧密度 ........................ 88

6.2.3 纵向距离 ............................ 88

6.2.4 变量声明 ............................ 89

6.2.5 相关函数 ............................ 90

6.2.6 概念关联性 ........................ 92

6.3 横向格式 ......................................... 92

6.3.1 横向留白与紧密度 ............. 93

6.3.2 横向对齐 ............................ 94

6.3.3 缩进 .................................... 95

6.3.4 违反缩进规则..................... 96

6.4 团队规则 ......................................... 97

6.5 鲍勃大叔的代码格式规则 ............. 97

第 7 章 整洁的函数 ...................................... 99

7.1 短小! ............................................100

7.1.1 好散文 ...............................100

7.1.2 每个函数一个抽象层级 ....101

7.2 自顶向下读代码:下梯规则 ........101

纠缠 ...............................................103

7.3 switch 语句 ................................103

7.4 深入探讨整洁的函数 ....................104

7.4.1 上下文相关 .......................105

7.4.2 可命名 ...............................106

7.4.3 被隔离 ...............................108

7.4.4 同质 ................................... 110

7.4.5 纯一 ................................... 111

7.4.6 部分纯一性 ....................... 113

7.5 小结 ................................................114

第 8 章 关于函数的经验之谈 .....................115

8.1 函数参数 ........................................115

8.1.1 可变参数 ........................... 116

8.1.2 参数多于 3 个? ................ 116

8.1.3 关键字参数 ....................... 117

8.1.4 标识参数 ........................... 117

8.1.5 输出参数 ........................... 118

8.1.6 错误码 ............................... 119

8.2 命令-查询分离 ............................. 119

8.3 使用异常替代返回错误码 ........... 120

8.3.1 责任自负 ........................... 120

8.3.2 抽离try/cache代码块 .... 121

8.3.3 错误处理就是一件事 ....... 122

8.3.4 错误码的依赖磁铁 ........... 122

8.4 DRY:别重复自己 ....................... 123

8.4.1 简单重复的代码 ............... 123

8.4.2 相似代码块 ....................... 124

8.4.3 循环重复 ........................... 127

8.4.4 偶合重复与本质重复 ....... 129

8.5 副作用 ........................................... 130

8.5.1 力有未逮 ........................... 130

8.5.2 函数式编程语言 ............... 131

8.5.3 面向对象编程语言 ........... 132

8.6 结构化编程 ................................... 133

8.6.1 顺序结构 ........................... 134

8.6.2 选择结构 ........................... 134

8.6.3 循环结构 ........................... 134

8.7 太多应牢记的事 ........................... 135

8.8 小结 ............................................... 135

第 9 章 整洁的方法 .................................... 136

9.1 把它改好 ....................................... 137

9.2 示例 ............................................... 138

考虑设计与架构 ........................... 150

9.3 小结 ............................................... 155

第 10 章 只做一件事 .................................. 156

10.1 提取方法重构 ............................. 157

不应置疑 ..................................... 158

10.2 到底什么是巨大函数 ................. 161

提取与类 ..................................... 174

10.3 小结 ............................................. 178

第 11 章 保持得体 ...................................... 179

11.1 报纸隐喻 ..................................... 180

保持得体 ......................................181

11.2 再谈下梯规则 ..............................182

11.3 抽象过山车 ..................................183

11.4 这么写,但不想这么读 ..............183

第 12 章 对象与数据结构 ...........................184

12.1 何为对象 ......................................185

12.2 数据抽象 ......................................185

12.3 数据/对象的反对称性 .................187

12.4 得墨忒耳律 ..................................189

12.4.1 火车失事 ........................189

12.4.2 混合结构 ........................190

12.4.3 隐藏结构 ........................190

12.5 数据传输对象 ..............................191

12.5.1 对象/关系“阻抗不匹配” ............................192

12.5.2 使用对象和数据结构 .....192

12.6 switch 语句 ..............................193

12.6.1 面向对象解决方案 ........195

12.6.2 别高兴得太早 ................196

12.7 选择面向对象还是选择过程式 ..............................................196

12.8 性能怎么办 ..................................197

12.9 小结 ..............................................197

第 13 章 整洁的类 .......................................198

13.1 类和模块与文件对比 ..................198

13.2 类应该包含什么 ..........................199

13.2.1 类设计的特征 ................199

13.2.2 经验与特征 ....................200

13.2.3 类什么时候算过大 ........201

13.2.4 代码中的策略 ................203

13.2.5 变更理由隐藏之处 ........203

13.2.6 修正问题 ........................204

13.2.7 一种过度开放的实现 ....206

13.2.8 该做点什么吗 ................207

13.2.9 现在怎么办 ....................207

13.2.10 闭合、高内聚、单一职责的类 ..................... 210

13.2.11 策略改变时 .................. 211

13.2.12 这算过度工程化吗 ...... 212

13.2.13 更简单的测试 ............. 212

13.2.14 接入 AI ........................ 213

13.2.15 它会犯错 ..................... 214

第 14 章 测试准则 ...................................... 215

14.1 准则 1:测试驱动的开发(TDD) ....................................... 216

TDD三法则 ................................ 216

14.2 准则 2:测试&&提交||回退(TCR) ........................................ 217

14.3 准则 3:小规模增量开发 .......... 218

14.4 设计 ............................................. 218

14.5 准则 ............................................. 219

14.5.1 枯燥、烦琐且低效........ 219

14.5.2 调试 ............................... 219

14.5.3 文档 ............................... 219

14.5.4 可靠性 ........................... 220

14.5.5 设计 ............................... 221

14.5.6 总结回顾 ....................... 221

14.5.7 天使与恶魔 ................... 221

14.5.8 驯服心魔 ....................... 222

14.5.9 复杂情况与漏洞 ........... 222

14.5.10 代价与影响 ................. 223

14.6 保持测试整洁 ............................. 223

14.7 测试赋能 ......................................224

第 15 章 整洁的测试 ...................................225

15.1 用于测试的领域特定语言 ..........228

15.1.1 组合断言 ........................228

15.1.2 组合测试结果 ................228

15.1.3 双重标准 ........................229

15.1.4 单一断言规则 ................230

15.1.5 单一执行规则 ................230

15.2 F.I.R.S.T. ......................................230

15.2.1 快速 ................................230

15.2.2 独立 ................................231

15.2.3 可重复 ............................231

15.2.4 自验证 ............................231

15.2.5 及时 ................................231

15.3 测试设计 ......................................231

15.4 小结 ..............................................232

第 16 章 验收测试 .......................................233

16.1 验收测试准则 ..............................233

16.1.1 准则 ................................235

16.1.2 持续构建 ........................235

16.2 小结 ..............................................235

第 17 章 AI、LLM 和天知道还有啥东西 ................................................236

17.1 用提示词编程 ..............................237

17.1.1 起步阶段 ........................241

17.1.2 斗胆盲猜 ........................241

17.2 小结 ..............................................244

第二部分 设 计

第 18 章 简单设计 ...................................... 246

18.1 YAGNI ......................................... 247

18.2 测试覆盖 ..................................... 247

18.2.1 渐进目标 ....................... 248

18.2.2 设计? ........................... 248

18.3 揭示意图 ..................................... 248

18.3.1 底层抽象 ........................250

18.3.2 测试:问题的后半部分 ...250

18.4 最小化重复 ..................................251

偶合重复 ......................................251

18.5 最小化规模 ..................................252

简单设计 ......................................252

第 19 章 SOLID 原则 ................................. 253

19.1 SRP:单一职责原则 .................. 254

19.1.1 偶合重复 ....................... 255

19.1.2 解决方案 ....................... 256

19.1.3 更高层级 ....................... 257

19.2 OCP:开放-闭合原则 ................ 257

19.2.1 思想实验 ....................... 257

19.2.2 方向控制 ....................... 260

19.2.3 信息隐藏 ....................... 260

19.2.4 小结 ............................... 260

19.3 LSP:里氏替换原则 .................. 260

19.3.1 LSP 与设计 .................... 261

19.3.2 出租车调度聚合平台 ..... 262

19.4 ISP:接口分离原则 .................... 263

19.4.1 ISP 与编程语言 ............. 263

19.4.2 ISP 与设计 ..................... 264

19.5 DIP:依赖倒置原则 ................... 264

19.5.1 稳定抽象 ....................... 266

19.5.2 工厂模式 ....................... 266

19.5.3 具体组件 ....................... 267

第 20 章 组件原则 ...................................... 268

20.1 组件 ............................................. 268

20.2 组件简史 ..................................... 269

20.2.1 可重定位 ....................... 270

20.2.2 连接器 ........................... 271

20.3 组件内聚性 ................................. 272

20.3.1 REP:复用/发布等价原则 ............................... 272

20.3.2 CCP:共同封闭原则 ..... 273

20.3.3 CRP:共同复用原则 ..... 274

20.3.4 组件内聚性张力图 ....... 275

20.3.5 小结 ............................... 276

20.4 组件耦合 ..................................... 276

20.4.1 ADP:无循环依赖原则 ............................... 276

20.4.2 SDP:稳定依赖原则 .....280

20.4.3 SAP:稳定抽象原则 .....284

20.5 小结 ..............................................287

第 21 章 持续设计 .......................................288

21.1 持续变更 ......................................289

21.2 持续设计 ......................................290

21.3 航行于持续设计的4C考量之上 ..............................................290

21.3.1 清晰性 ............................291

21.3.2 简洁性 ............................295

21.3.3 可验证性 ........................301

21.3.4 内聚性 ............................309

21.4 还需要在何时进行设计 ..............312

21.4.1 设计前置 ........................312

21.4.2 为工作做准备 ................312

21.4.3 开始工作 ........................313

21.4.4 做工作 ............................313

第 22 章 并发编程 .......................................314

22.1 为什么要并发 ..............................315

22.1.1 传言与误解 ...................316

22.1.2 挑战 ...............................316

22.2 并发防御原则 ..............................317

22.2.1 单一职责原则 ...............317

22.2.2 推论:限制数据的作用域 ............................317

22.2.3 推论:使用数据副本 .....317

22.2.4 推论:线程应尽可能独立 ................................318

22.3 了解你使用的语言和库 ..............318

线程安全工具集 ..........................318

22.4 了解执行模型 ..............................319

22.4.1 生产者-消费者模型 .......319

22.4.2 读者-写者模型 .............320

22.4.3 哲学家进餐问题 ...........320

22.5 警惕同步方法之间的依赖 ..........320

22.6 保持同步区短小 ......................... 321

22.7 正确的启动代码和关闭代码难以编写 ..................................... 321

22.8 测试线程代码 ............................. 321

22.8.1 将偶发失败看作潜在的线程问题 ....................... 322

22.8.2 先让非线程代码工作 ............................... 322

22.8.3 编写可插拔的线程代码 ............................... 322

22.8.4 编写可调优的线程代码 ................................323

22.8.5 运行比处理器数量多的线程 ................................323

22.8.6 在不同平台上运行 .......323

22.8.7 安插试错代码,尝试并强制代码失败 ...............323

22.9 2025 年实战更新及报告 .............325

数据完整性 ..................................325

22.10 小结 ............................................329

第三部分 架 构

第 23 章 软件的两大价值 .......................... 331

保留可能性 ............................................ 331

第 24 章 独立性 .......................................... 333

24.1 用例 ............................................. 334

24.2 运行 ............................................. 334

24.3 开发 ............................................. 334

24.4 部署 ............................................. 335

24.5 保留可能性 ................................. 335

第 25 章 架构的边界 .................................. 336

25.1 何时划定边界,划定怎样的边界 ............................................. 337

25.2 插件架构 ..................................... 338

25.3 案例研究:FitNesse ................... 339

25.4 小结 ............................................. 340

第 26 章 整洁的边界 .................................. 341

26.1 第三方物联网框架:诸多边界 ............................................. 341

26.2 用户界面/应用边界 .....................345

26.2.1 SOLID 原则与六边形架构 ................................347

26.2.2 探索和学习边界 ...........349

26.2.3 使用尚不存在的代码 .....351

26.3 整洁的边界 ..................................352

第 27 章 整洁的架构 ...................................353

27.1 依赖规则 ......................................354

27.1.1 实体层 ...........................355

27.1.2 用例层 ...........................355

27.1.3 接口适配层 ...................355

27.1.4 框架与驱动层 ...............355

27.1.5 只有4个圈层吗 ...........356

27.1.6 跨越边界 .......................356

27.1.7 什么数据会跨越边界 .....356

27.1.8 典型场景 .......................356

27.2 小结 ..............................................357

第四部分 匠 艺

“大量” .................................................. 359

80 多年 ................................................... 359

书呆子与救世主 ......................... 362

名声 ............................................. 362

榜样与恶棍 ..................................363

我们“主宰”世界 ......................364

灾难 ..............................................365

程序员誓言 .............................................366

第 28 章 有害 .............................................. 367

28.1 对社会无害 ................................. 368

28.2 对功能无害 ................................. 369

28.3 对结构无害 ................................. 370

28.4 柔性 ............................................. 371

28.5 测试 ............................................. 372

第 29 章 不损害软件行为或结构 .............. 373

29.1 把它改好 ..................................... 374

29.1.1 什么是好结构 ............... 374

29.1.2 艾森豪威尔决策矩阵 ..... 375

29.2 程序员是利益相关者 ................. 376

29.3 尽己所能 ..................................... 377

第 30 章 可重复证据 .................................. 379

30.1 迪杰斯特拉 ................................. 379

证明正确性 ................................. 380

30.2 结构化编程 ................................. 381

30.3 功能分解 ..................................... 383

30.4 TDD 及同类准则 ........................ 383

第 31 章 小周期 .......................................... 385

31.1 源码控制史 ................................. 385

31.1.1 打孔卡 ........................... 385

31.1.2 持续集成 ....................... 389

31.1.3 短周期 ........................... 389

31.2 持续集成 ..................................... 390

31.3 分支与功能开关 ......................... 390

31.4 持续部署 ..................................... 392

31.5 持续构建 ..................................... 393

第 32 章 持续打磨 ...................................... 394

32.1 测试覆盖率 ................................. 394

32.2 变异测试 ..................................... 395

32.3 语义稳定性 ................................. 395

32.4 清洁 ............................................. 396

32.5 创作成果 ......................................396

第 33 章 保持高生产力 ...............................397

33.1 黏性 ..............................................397

33.1.1 构建 ...............................398

33.1.2 测试 ...............................398

33.1.3 调试 ...............................399

33.1.4 部署 ...............................399

33.2 干扰管理 ......................................399

33.2.1 会议 ...............................399

33.2.2 音乐 ...............................400

33.2.3 心情 ...............................400

33.2.4 心流 ...............................401

33.3 时间管理 ......................................401

第 34 章 团队协作 .......................................403

34.1 协同编程 ......................................403

34.2 开放式办公室/虚拟办公室 .........404

第 35 章 靠谱和合理地估算 .......................405

35.1 谎言 ..............................................405

35.2 靠谱、准确、精确 ......................406

35.3 我的教训 ......................................406

35.3.1 故事 1:向量 ................406

35.3.2 故事 2:pCCU ..............408

35.3.3 教训 ...............................408

35.4 准确性与精确性 ..........................409

35.5 汇总 ..............................................410

35.6 靠谱 ..............................................410

35.7 压力 ..............................................411

第 36 章 尊重程序员同行 ...........................412

第 37 章 永不停止学习 ...............................413

后记 .................................................................415

附录 A 激辩《代码整洁之道》..................419

参考文献 .........................................................460

精彩书评

本书第1版赞誉

《代码整洁之道》在诸多方面改变了我开发和维护软件的方式。它精准定义了好代码的编写准则。我不仅从这本书中学到了大量知识,还将其中许多宝贵经验付诸实践。坦白说,经历了这段学习历程后,软件开发于我而言再次成为一件乐事:凝视着自己引以为傲的代码,心中满是成就感。

——史蒂夫·罗伯茨(Steve Roberts),IT部门负责人

阅读《代码整洁之道》印证了我对软件编写的直觉认知,同时也教会了我许多新知识,提升了我的工作质量。我特别感激这本书的作者,他的系列作品都给了我很大的帮助,即便在人工智能时代,它们依然是不可或缺的基础读物。

——米洛什·拜奇(Milos Baic),开发者兼解决方案架构师

《代码整洁之道》是我职业生涯中遇到的最具影响力的著作之一。只要我所在的团队遵循书中的原则,工作压力就会大幅减轻,因为代码突然变得更易于理解,维护起来也更加轻松。在设计时兼顾可测试性,这一理念消除了设计和维护过程中的诸多复杂性。最重要的是,它让编程重新变得惬意而有趣。当你将混乱的代码库重构为整洁的代码库时,这种愉悦感会愈发强烈。

——扎尔科·斯托扬诺维奇(?arko Stojanovi?),资深软件工程师

《代码整洁之道(第2版)》全书速览

结束语

AI可以帮我们快速产出代码,却无法替我们做好代码规范、逻辑梳理与工程优化。工具决定开发速度,代码整洁度决定项目寿命,也决定开发者的技术上限。混乱的代码只会让项目越做越烂、维护越做越累,整洁的编码习惯才能让开发高效、迭代顺畅、项目稳定落地。作为风靡行业17年的编程经典,《代码整洁之道(第2版)》结合当下AI开发场景全新升级,从编码规范、命名规则、函数设计、工程重构到实战避坑,全方位教会开发者如何写出高质量、易维护、可复用的专业代码。无论你是入门开发者、资深工程师还是团队技术负责人,这本书都是AI时代必不可少的编程进阶宝典。想要摆脱烂代码堆砌的困境、告别低效维护、夯实编程基本功的朋友,一定要吃透这本经典!关注博主、点赞收藏,后续持续分享优质编程干货与技术好书,助力每一位开发者在AI时代稳步提升、高效进阶!

Logo

加入「COC·上海城市开发者社区」,成就更好的自己!

更多推荐