代码整洁之道

[美] Robert C. Martin

出版时间

2020-01-31

ISBN

9787115524133

评分

★★★★★

标签

编程

书籍介绍

软件质量,不但依赖架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。本书提出一种观点:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自实际项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

AI导读
核心看点
  • 代码质量与整洁度成正比,整洁代码更可靠且易维护
  • 提供从命名、函数到错误处理的具体实践规则与正反范例
  • 倡导童子军军规,每次提交代码时都应让代码比之前更干净
适合谁读
  • 有志于改善代码质量、提升编程境界的程序员
  • 需要规范团队代码风格的技术经理与架构师
  • 具备一定编程基础,希望从能运行进阶到易维护的开发者
读前提醒
  • 书中规则看似严格,需结合项目实际灵活应用,避免教条主义
  • 建议边读边对照自己的代码进行重构练习,以加深理解
  • 若无一定编程经验,部分规则可能难以体会,建议积累后重读
读者共识
  • 程序员必读经典,相见恨晚,能显著提升代码可读性与可维护性
  • 干货满满,虽部分规则严苛,但大方向正确,值得反复研读
  • 写代码如写文章,整洁是艺术也是态度,能有效远离技术债务

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "衡量代码质量的唯一有效标准:WTF/min"
  • "1,代码逻辑直接了当,让缺陷难以隐藏 2,尽量减少依赖关系,使之便于维护 3,依据某种分层策略完善错误处理代码 4,性能调至最优,省得引诱别人做没规矩的优化 5,整洁的代码只做一件事 6,简单直接,具有可读性 7,有单元测试和验收测试 8,有意义的命名 9,代码应在字面上表达其含义 10,尽量少的实体:类、方法、函数 11,没有重复代码"
  • "1,名副其实:名称不需要注释补充就可见其含义、用途 2,避免误导: (1)系统专有名称不宜作为变量名 (2)提防差别很小的名称,在代码自动完成时容易选错 (3)用字母I和O作为变量名,让人看成1和0 3,做有意义的区分 不要用数字或废话来区分 4,使用读得出来的名称 5,使用可搜索的名称 少用单字母名称或没有名称的数字常量 6,避免使用编码 (1)不必在名称中标明类型,现代语言有完善的类型检查 (2)不必在名称中区别成员变量,应采用自动高亮成员的编译环境 (3)宁可对实现编码,也不要对接口编码 7,避免使用让别人理解成其他领域常用词的名称 8,类名应该是名词或名词短语,不应是动词 9,方法名应"
  • "1,短小 (1)不该超过20行 (2)每个代码块(if, else,while)应该只有一行,包含一个函数 2,只做一件事 如果能拆成几个函数,就不是只做一件事 3,每个函数一个抽象层次 自顶向下的抽象层次 4,switch语句 用于创建多态对象,并隐藏在抽象工厂中 5,使用描述性的名称 6,尽量避免多余2个参数 (1)使用返回值而不是输出参数 (2)不要用标识参数,即向函数传入bool值,应该写成两个函数 (3)如果一定需要多个参数,那么可能需要对参数进行封装 7,无副作用 尽量少做不是函数名称表明的事情 8,使用异常代替返回错误码 (1)把try,catch从正常流程中分离开 9,消除重复"
  • "1,尽量减少注释量,用代码本身说明问题 (1)代码常常变动,注释却不能跟着变 (2)只有代码是唯一准确的信息来源 (3)创建一个和注释所言相同的函数来代替注释 2,好的注释 (1)法律信息 (2)解释程序员的意图 (3)警示其他程序员某种后果 (4)TODO 定期删除不需要的 (5)公共API中的javadoc 3,坏的注释 (1)喃喃自语,只有作者自己能看懂 (2)多余的注释 不一定比代码精到 (3)不是每个函数和变量都要有javadoc (4)日志式注释,修改记录 (5)能用函数或变量时就别用注释 (6)用代码控制系统,而不是注释表明归属 (7)不要保留注释掉的代码,利用源代码控制系统"
  • "1,垂直距离 (1)变量声明尽可能靠近使用位置,本地变量应在函数顶部出现 (2)实体变量应在类的顶部声明 (3)相关函数放在一起 (4)函数的排列顺序保持其相互调用的顺序 2,水平位置 (1)一行代码尽量短,不超过100-120字符 (2)用空格将相关性弱的分开:加减法,赋值,乘法因子见无需空格 (3)声明和赋值不需要水平对齐 (4)缩进 空循环容易忽略行末的分号,要括号包围空循环。"
  • "1,TDD三定律 (1)在编写不能通过的单元测试前,不能编写生产代码 (2)只可编写刚好无法通过的单元测试,不能编译也不算通过 (3)只可编写刚好足以通过当前失败测试的生产代码 2,测试代码和生产代码一样重要,一样需要整洁 3,每个测试一个断言,每个测试一个概念"
  • "1,并发防御原则 (1)单一权责:方法/类/组件应当只有一个修改的理由 (2)限制数据作用域 (3)使用数据副本避免共享数据 (4)线程应尽可能独立 2,了解常见的执行模型:生产者-消费者,读者-作者,宴席哲学家 3,警惕同步方法之间的依赖 4,保持同步区微小 5,尽早考虑关闭的代码,注意线程之间的依赖关系 6,测试线程代码 (1)将伪失败看作可能的线程问题 (2)先使非线程代码工作 (3)运行多于处理器数量的线程 (4)在不同平台上运行 (5)手动插入调试的试错代码"
作者简介
作者 | Robert C. Martin 世界级软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report前主编,被后辈程序员尊称为“Bob大叔”。20世纪70年代初成为职业程序员,后创办Object Mentor公司并任总裁。Martin还是一名多产的作家,至今已发表数百篇文章、论文和博客文章。除本书外,还著有《代码整洁之道:程序员的职业素养》《敏捷软件开发:原则、模式和实践》《UML:Java程序员指南》等。 译者 | 韩磊 互联网产品与社区运营专家,技术书籍著译者。曾任CSDN及《程序员》杂志副总经理、总编辑,广东二十一世纪传媒新媒体事业部总经理等职。现任AR初创企业亮风台广州公司总经理。除本书外,还译有《梦断代码》《C#编程风格》等书。与刘韧合著《网络媒体教程》,与戴飞合译《Beginning C# Objects中文版:概念到代码》。
目录
第1章 整洁代码 1
1.1 要有代码 2
1.2 糟糕的代码 2
1.3 混乱的代价 3
1.3.1 华丽新设计 4

显示全部
用户评论
c++er可以丢掉这本直接看 google c++style guide,这本书真正有价值的部分在14和16两章,但这两章的阅读收益不高,还不如找一个好项目的代码去看。另外,作者实在是太偏执了,让我有点反感。
我觉得这本书非常适合工作半年左右,经历过烂代码,写过烂代码,看过好代码,想写好代码的同学,里边提到的一些点对我写代码非常有触动,我也想过把其中的点用帖子发出来,奈何觉得脱离了这本书光说理论,太空洞了,我还是非常推荐大家像我这种新手程序员去看一看
似乎专业到有些偏执了,但是这种工作态度值得肯定
好书,墙裂推荐。 差不多看了两年才看完,因为刚开始看就发现很合我意,所以故意压慢了速度,结果终于有一天忘了这事……后来终于又找出来,才发现,我的有些想法,不知道是我自己想出来的,还是说这本书给我的? 给不喜欢这本书的人:一个写了40年代码的老程序员写的书,应该有它可取的地方,你可以不喜欢里面的部分内容,但是它肯定不是一无是处。
编写易读的代码,有指导意义
很不错啊,不过写到中间作者好像也有点水字数了😂 还有翻译光错别字,比如奇客是个啥,😂
名气比较大的书,泛泛而谈。有些坐而论道的意味。
收藏