具体描述
《代码整洁之道(英文版)》提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,《代码整洁之道(英文版)》作者给出了一系列行之有效的整洁代码操作实践。这些实践在《代码整洁之道(英文版)》中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。
《代码整洁之道(英文版)》阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。
作者简介
Rober C.Martin,Object Mentor公司总裁。面向对象设计、模式、UML、敏捷方法学和极限编程领域的资深顾问。他是Designing Object-Oriented C++Applications Using the BoochMethod以及Jolt获奖图书Agile SoftwareDevelopment,Principles,Pattems,and Practices(中译版《敏捷软件开发:原则、模式与实践》)等畅销书作者。
目录信息
There Will Be Code
Bad Code
The Total Cost of Owning a Mess
The Grand Redesign in the Sky
Attitude
The Primal Conundrum
The Art of Clean Code?
What Is Clean Code?
Schools of Thought
We Are Authors
The Boy Scout Rule
Prequel and Principles
Conclusion
Bibliography
Chapter 2: Meaningful Names
Introduction
Use Intention-Revealing Names
Avoid Disinformation
Make Meaningful Distinctions
Use Pronounceable Names
Use Searchable Names
Avoid Encodings
Hungarian Notation
Member Prefixes
Interfaces and Implementations
Avoid Mental Mapping
Class Names
Method Names
Don't Be Cute
Pick One Word per Concept
Don't Pun
Use Solution Domain Names
Use Problem Domain Names
Add Meaningful Context
Don't Add Gratuitous Context
Final Words
Chapter 3: Functions
Small!
Blocks and Indenting
Do One Thing
Sections within Functions
One Level of Abstraction per Function
Reading Code from Top to Bottom: The Stepdown Rule
Switch Statements
Use Descriptive Names
Function Arguments
Common Monadic Forms
Flag Arguments
Dyadic Functions
Triads
Argument Objects
Argument Lists
Verbs and Keywords
Have No Side Effects
Output Arguments
Command Query Separation
Prefer Exceptions to Returning Error Codes
Extract Try/Catch Blocks
Error Handling Is One Thing
The Error. java Dependency Magnet
Don't Repeat Yourself
Structured Programming
How Do You Write Functions Like This?
Conclusion
Setup Teardown Includer
Bibliography
Chapter 4: Comments
Comments Do Not Make Up for Bad Code
Explain Yourself in Code
Good Comments
Legal Comments
Informative Comments
Explanation of Intent
Clarification
Warning of Consequences
TODO Comments
Amplification
Javadocs in Public APIs
Bad Comments
Mumbling
Redundant Comments
Misleading Comments
Mandated Comments
Journal Comments
Noise Comments
Scary Noise
Don't Use a Comment When You Can Use a
Function or a Variable
Position Markers
Closing Brace Comments
Attributions and Bylines
Commented-Out Code
HTML Comments
Nonlocal Information
Too Much Information
Inobvious Connection
Function Headers
Javadocs in Nonpublic Code
Example
Bibliography
Chapter 5: Formatting
The Purpose of Formatting
Vertical Formatting
The Newspaper Metaphor
Vertical Openness Between Concepts
Vertical Density
Vertical Distance
Vertical Ordering
Horizontal Formatting
Horizontal Openness and Density
Horizontal Alignment
Indentation
Dummy Scopes
Team Rules
Uncle Bob's Formatting Rules
Chapter 6: Objects and Data Structures
Data Abstraction
Data/Object Anti-Symmetry
The Law of Demeter
Train Wrecks
Hybrids
Hiding Structure
Data Transfer Objects
Active Record
Conclusion
Bibliography
……
· · · · · · (收起)
读后感
Use Java as examples. After reading this book, you should able to improve your programming style.
我对技术书的要求一向很高,就像我确实很少给一本技术书五星,可是对这本书,我在读到一半的时候,就已经迫不及待把他标志成五星书籍。 在和朋友聊到这本书的时候,朋友谈到,其实书里的道理非常浅显,每个人都知道,只是我们到真的去用的时候就忘记了,或者为了省事就不去注...
这是一本真正的好书,不过如果读者没有一定的经验,以及缺乏对编程境界的追求的话,可能认为这本书很一般,甚至认为只是说了一些大白话。当然,对于有心人来说,这本书里面的很多东西可能都已经习以为常了。我的排序:本书>《代码大全》>《重构》。
我对技术书的要求一向很高,就像我确实很少给一本技术书五星,可是对这本书,我在读到一半的时候,就已经迫不及待把他标志成五星书籍。 在和朋友聊到这本书的时候,朋友谈到,其实书里的道理非常浅显,每个人都知道,只是我们到真的去用的时候就忘记了,或者为了省事就不去注...
现在看到那些不好的代码就感觉不舒服,想给改改吧,但又不知道到从和处开刀,挺纠结的,可能是现在火候还不到吧。 现在写代码开始考虑易读性了,以前的想法就是写过的代码从来不会看第二遍,其实这也可能,但是一旦养成个了这个不好的习惯,有一天你想写好让别人能看懂的代码...
用户评价
说实话,刚翻开这本书的时候,我有些担心它会像市面上很多充斥着华丽辞藻却缺乏实质内容的“速成宝典”一样,但事实证明我的担忧完全是多余的。这本书的价值核心在于它对“人”和“流程”在代码质量中作用的深刻洞察。它不只是教你如何写出编译通过的代码,更是教你如何成为一个更优秀的团队成员和技术领导者。比如,书中关于代码审查(Code Review)的章节,它细致地拆解了从提交前的自我检查到同行评审的每一个步骤,强调了文化建设的重要性——如何营造一个互相尊重、专注于提升代码质量而非指责个人的环境。这对于我目前所在团队那种“写完就走”的低效模式起到了醍醐灌顶的作用。它让我意识到,代码质量的提升是一个系统工程,涉及到工具、流程、以及最重要的——团队的责任感和沟通方式。这种对“软技能”和“硬技能”的完美融合,使得这本书的实用性远远超出了单纯的技术手册范畴,更像是一本关于卓越工程文化的指南。
这本书在技术哲学层面的探讨,是我阅读众多技术书籍中感受最为深刻的部分。它反复强调,代码是为人服务的,最终目标是降低人类理解系统的成本。作者用一种近乎诗意的笔触,描述了“心智模型”与代码结构之间的和谐关系。有一段论述我至今记忆犹新:好的代码应该像一个精心设计的博物馆,即使是第一次到访的人,也能顺着清晰的导览标识,快速找到他想看的东西,而不会迷失在无意义的装饰中。这种对可读性和意图表达的执着,贯穿了全书。它让我开始重新审视自己过去那些为了追求“巧妙”而写下的代码——那些代码也许在编译器看来很高效,但在团队协作中却成了效率的杀手。这本书提供了一种高级的视角,超越了单一的性能优化或功能实现,而是站在构建一个可持续的、能够随着时间推移而自我净化的技术资产的高度来审视一切。它让我从一个纯粹的“编码者”,向一个更有责任感的“系统缔造者”转变。
这部书的深度和广度真的让人惊叹,尤其是在探讨软件架构的演进和实践方面,作者的见解独到且极具前瞻性。书中对于如何构建一个能够应对未来变化、易于维护和扩展的系统,提供了非常扎实的方法论。我记得有一章专门讲了微服务架构下的数据一致性问题,它没有停留在理论层面,而是结合了多个真实世界的案例,详细分析了Saga模式、事件溯源等不同策略的优缺点和适用场景。读完这一章,我感觉自己对分布式系统的理解一下子提升到了一个新的高度,不再是盲目地追随潮流,而是能够根据业务的实际需求做出更明智的技术选型。作者的语言风格非常严谨,每一个论点都有充分的论据支撑,读起来虽然需要集中注意力,但每翻过一页都能感觉到自己的知识储备在稳步增长,那种“茅塞顿开”的感觉是其他技术书籍很少能给予的。它真正做到了,将复杂的概念层层剥开,用清晰的逻辑链条呈现出来,让高级工程师能从中找到解决棘手问题的钥匙,也让有经验的开发者能够反思自己现有工作流程中的潜在盲点。
我必须承认,这本书的阅读体验是充满挑战性的,但这种挑战感恰恰是它价值的体现。它拒绝提供肤浅的“最佳实践清单”,而是深入到“为什么”这些实践会成为最佳。其中关于测试策略的章节,尤其令我印象深刻。它不仅介绍了单元测试、集成测试,更深入地探讨了混沌工程(Chaos Engineering)在大型系统稳定运行中的作用。作者通过一系列生动的比喻,将抽象的系统韧性概念具体化,让人明白在现代云原生环境中,‘预期故障’的重要性远超‘预防故障’。这种思维模式的转变,是需要时间和心力去消化的。它要求读者不仅要精通手头的代码,还要对整个运行环境、部署流程乃至业务的容忍度都有宏观的把握。因此,这本书更像是一本值得反复研读的工具书,每次重读,都会因为自身经验的增长而发现新的层次和更深的应用价值,绝非一次性消费品。
这本书在编程范式和设计模式的探讨上,展现出一种超越时代局限的智慧。它没有固步自封于某一种语言的特性,而是将经典的设计原则(如SOLID、DRY)与现代编程语言的最新特性结合起来进行阐释。特别是它对函数式编程思想在命令式语言中的应用那一部分,作者的讲解非常精彩,清晰地展示了如何通过引入不可变性来大幅简化状态管理,从而降低复杂性。我特别欣赏作者在介绍每一种模式时,都会同时给出“过度使用该模式的陷阱”。这种辩证的、不偏激的分析角度,避免了读者陷入“为模式而模式”的僵局。它鼓励读者去思考“为什么”要用某种结构,而不是简单地“怎么用”。对于我这种习惯了面向对象思维的开发者来说,这本书像是一剂清醒剂,提醒我要时刻警惕对象之间过度的耦合,并主动寻找更简洁、更具表达力的解决方案。阅读过程就像和一位经验老道的架构师进行了一次深入的、一对一的知识传递,受益匪浅。
5星好评!
有些规范写多了已经潜移默化了,看了这本才知道为什么这样写才是clean的
Java 程序员都应该读读这本书。
2018.10。合适细读,有收获,有部份观点不太认同。后来又买了纸质版
有效提高代码质量