<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CleanCode on SkySeraph</title><link>https://skyseraph.github.io/tags/cleancode/</link><description>Recent content in CleanCode on SkySeraph</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 06 Oct 2025 08:00:00 +0800</lastBuildDate><atom:link href="https://skyseraph.github.io/tags/cleancode/index.xml" rel="self" type="application/rss+xml"/><item><title>《代码整洁之道》</title><link>https://skyseraph.github.io/posts/2025/clean_code/</link><pubDate>Mon, 06 Oct 2025 08:00:00 +0800</pubDate><guid>https://skyseraph.github.io/posts/2025/clean_code/</guid><description>&lt;blockquote&gt;
&lt;p&gt;作者：SkySeraph&lt;br&gt;
原始链接：&lt;a href="https://skyseraph.github.io/posts/2025/clean_code"&gt;《代码整洁之道》&lt;/a&gt;&lt;br&gt;
日期：2025-10-06&lt;br&gt;
这本书真正的贡献不是&amp;quot;代码要整洁&amp;quot;这个道理，而是提供了一套&lt;strong&gt;可操作的判断框架&lt;/strong&gt;：当你在命名一个变量、拆分一个函数、决定是否写注释时，它给了你一个具体的评判标准。它的缺陷同样真实：这套框架是为 Java 企业软件定制的，它把特定语境下的最佳实践包装成了普适真理。读这本书的正确姿势是：把它当作一位有偏见但见识深刻的前辈，认真倾听，批判吸收。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一书籍介绍"&gt;一、书籍介绍&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;基本信息&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;项目&lt;/th&gt;
					&lt;th&gt;内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;书名&lt;/td&gt;
					&lt;td&gt;代码整洁之道&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;原著书名&lt;/td&gt;
					&lt;td&gt;Clean Code: A Handbook of Agile Software Craftsmanship&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;作者&lt;/td&gt;
					&lt;td&gt;Robert C. Martin（&amp;ldquo;Uncle Bob&amp;rdquo;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;译者&lt;/td&gt;
					&lt;td&gt;韩磊&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;出版社&lt;/td&gt;
					&lt;td&gt;人民邮电出版社（中文版）；Prentice Hall（英文版）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;出版年份&lt;/td&gt;
					&lt;td&gt;2008年（英文版）；2010年（中文版）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;ISBN&lt;/td&gt;
					&lt;td&gt;978-7-115-21687-8（中文版）；978-0-13-235088-4（英文版）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;页数&lt;/td&gt;
					&lt;td&gt;387页&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;作者简介&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Robert C. Martin 有超过 50 年的编程经验，是《敏捷宣言》的 17 位联合起草人之一，SOLID 原则的命名者和推广者。他创办了 Object Mentor Inc.，在数十年的企业咨询和培训中接触了大量真实的&amp;quot;烂代码&amp;quot;——这是他写这本书的独特资格：他不是纸上谈兵，而是见过代价。他的代表作系列（Clean Code → The Clean Coder → Clean Architecture）构成了一套从代码到职业到系统的完整工程师素养观。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;内容概览&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本书的核心主张可以浓缩为一句话：&amp;ldquo;代码首先是写给人读的，其次才是让机器执行的。&amp;ldquo;全书可以分为三层：&lt;strong&gt;规则层&lt;/strong&gt;（第1-13章，给出命名、函数、注释、格式、对象、错误处理、测试、类、系统等维度的具体规则）、&lt;strong&gt;实践层&lt;/strong&gt;（第14-16章，通过真实代码的完整重构过程展示规则如何落地）、&lt;strong&gt;参考层&lt;/strong&gt;（第17章，66条代码坏味道清单，可作为独立的代码审查手册使用）。&lt;/p&gt;
&lt;p&gt;这本书挑战了三个工程文化中的常见假设：（1）&amp;ldquo;能跑就行&amp;rdquo;——作者论证可读性是长期生产力的基础设施；（2）&amp;ldquo;注释越多越好&amp;rdquo;——作者论证注释是代码表达失败的信号；（3）&amp;ldquo;测试代码可以随便写&amp;rdquo;——作者论证脏测试等于没有测试。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;相关链接&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/4199741/"&gt;豆瓣读书&lt;/a&gt;（评分 8.6，10万+ 评价）&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/book/show/3735293-clean-code"&gt;Goodreads&lt;/a&gt;（评分 4.4/5，20万+ 评价）&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882"&gt;Amazon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cleancoders.com"&gt;作者视频课程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二大纲与阅读笔记"&gt;二、大纲与阅读笔记&lt;/h2&gt;
&lt;h3 id="全书结构"&gt;全书结构&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;章节&lt;/th&gt;
					&lt;th&gt;标题&lt;/th&gt;
					&lt;th&gt;核心问题&lt;/th&gt;
					&lt;th&gt;本章最重要的一个概念&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;第1章&lt;/td&gt;
					&lt;td&gt;整洁代码&lt;/td&gt;
					&lt;td&gt;什么是整洁代码？代价是什么？&lt;/td&gt;
					&lt;td&gt;勒布朗定律：稍后等于永不&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第2章&lt;/td&gt;
					&lt;td&gt;有意义的命名&lt;/td&gt;
					&lt;td&gt;名字如何传达意图？&lt;/td&gt;
					&lt;td&gt;名字长度应与作用域大小成正比&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第3章&lt;/td&gt;
					&lt;td&gt;函数&lt;/td&gt;
					&lt;td&gt;如何写只做一件事的函数？&lt;/td&gt;
					&lt;td&gt;单一抽象层次原则（SLAP）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第4章&lt;/td&gt;
					&lt;td&gt;注释&lt;/td&gt;
					&lt;td&gt;什么时候应该写注释？&lt;/td&gt;
					&lt;td&gt;好注释解释 why，坏注释解释 what&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第5章&lt;/td&gt;
					&lt;td&gt;格式&lt;/td&gt;
					&lt;td&gt;代码格式如何影响可读性？&lt;/td&gt;
					&lt;td&gt;报纸隐喻：从高层到细节自上而下&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第6章&lt;/td&gt;
					&lt;td&gt;对象和数据结构&lt;/td&gt;
					&lt;td&gt;对象与数据结构的根本区别是什么？&lt;/td&gt;
					&lt;td&gt;过程式 vs OO 的对称反转&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第7章&lt;/td&gt;
					&lt;td&gt;错误处理&lt;/td&gt;
					&lt;td&gt;如何让错误处理不污染业务逻辑？&lt;/td&gt;
					&lt;td&gt;不要返回 null，不要传递 null&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第8章&lt;/td&gt;
					&lt;td&gt;边界&lt;/td&gt;
					&lt;td&gt;如何安全地使用第三方代码？&lt;/td&gt;
					&lt;td&gt;学习性测试（Learning Tests）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第9章&lt;/td&gt;
					&lt;td&gt;单元测试&lt;/td&gt;
					&lt;td&gt;什么是整洁的测试？&lt;/td&gt;
					&lt;td&gt;F.I.R.S.T. 原则&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第10章&lt;/td&gt;
					&lt;td&gt;类&lt;/td&gt;
					&lt;td&gt;类应该有多大？职责边界在哪里？&lt;/td&gt;
					&lt;td&gt;内聚性下降 = 拆分信号&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第11章&lt;/td&gt;
					&lt;td&gt;系统&lt;/td&gt;
					&lt;td&gt;如何在架构层面保持整洁？&lt;/td&gt;
					&lt;td&gt;构建与使用分离（DI/IoC）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第12章&lt;/td&gt;
					&lt;td&gt;迭进&lt;/td&gt;
					&lt;td&gt;简单设计的充要条件是什么？&lt;/td&gt;
					&lt;td&gt;Kent Beck 四规则（按优先级）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第13章&lt;/td&gt;
					&lt;td&gt;并发编程&lt;/td&gt;
					&lt;td&gt;并发为什么难？如何防御？&lt;/td&gt;
					&lt;td&gt;并发代码与业务代码必须分离&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第14-16章&lt;/td&gt;
					&lt;td&gt;案例研究&lt;/td&gt;
					&lt;td&gt;原则如何在真实代码中落地？&lt;/td&gt;
					&lt;td&gt;重构不是一步到位，是持续迭代&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第17章&lt;/td&gt;
					&lt;td&gt;味道与启发&lt;/td&gt;
					&lt;td&gt;如何系统识别代码坏味道？&lt;/td&gt;
					&lt;td&gt;66条启发式规则（代码审查手册）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id="各章精读"&gt;各章精读&lt;/h3&gt;
&lt;h4 id="第1章整洁代码为什么代价如此之高"&gt;第1章：整洁代码——为什么代价如此之高？&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;核心论点&lt;/strong&gt;：烂代码的代价不是线性的，而是指数级的。随着烂代码积累，生产力趋近于零，最终只有大规模重写一条路——而重写往往比继续维护更贵。&lt;/p&gt;</description></item></channel></rss>