第一图书网

编写可读代码的艺术

Boswell, D.,Foucher, T. 机械工业出版社华章公司
出版时间:

2012-7-10  

出版社:

机械工业出版社华章公司  

作者:

Boswell, D.,Foucher, T.  

页数:

178  

译者:

尹哲,郑秀雯  

Tag标签:

无  

前言

我们曾经在非常成功的软件公司中和出色的工程师一起工作,然而我们所遇到的代码仍有很大的改进空间。实际上,我们曾见到一些很难看的代码,你可能也见过。 但是当我们看到写得很漂亮的代码时,会很受启发。好代码会很明确告诉你它在做什么。使用它会很有趣,并且会鼓励你把自己的代码写得更好。 本书旨在帮助你把代码写得更好。当我们说“代码”时,指的就是你在编辑器里面要写的一行一行的代码。我们不会讨论项目的整体架构,或者所选择的设计模式。当然那些很重要,但我们的经验是程序员的日常工作的大部分时间都花在一些“基本”的事情上,像是给变量命名、写循环以及在函数级别解决问题。并且这其中很大的一部分是阅读和编辑已有的代码。我们希望本书对你每天的编程工作有很多帮助,并且希望你把本书推荐给你团队中的每个人。本书内容安排 这是一本关于如何编写具有高可读性代码的书。本书的关键思想是代码应该写得容易理解。确切地说,使别人用最短的时间理解你的代码。 本书解释了这种思想,并且用不同语言的大量例子来讲解,包括C++、Python、JavaScript和Java。我们避免使用某种高级的语言特性,所以即使你不是对所有的语言都了解,也能很容易看懂。(以我们的经验,反正可读性的大部分概念都是和语言不相关的。)每一章都会深入编程的某个方面来讨论如何使代码更容易理解。本书分成四部分:•表面层次上的改进 命名、注释以及审美——可以用于代码库每一行的小提示。•简化循环和逻辑 在程序中定义循环、逻辑和变量,从而使得代码更容易理解。•重新组织你的代码 在更高层次上组织大的代码块以及在功能层次上解决问题的方法。•精选话题 把“易于理解”的思想应用于测试以及大数据结构代码的例子。如何阅读本书 我们希望本书读起来愉快而又轻松。我们希望大部分读者在一两周之内读完全书。章节是按照"难度"来排序的:基本的话题在前面,更高级的话题在后面。然而,每章都是独立的。因此如果你想跳着读也可以。代码示例的使用 本书旨在帮助你完成你的工作。一般来说,可以在程序和文档中使用本书的代码。如果你复制了代码的关键部分,那么你就需要联系我们获得许可。例如,利用本书的几段代码编写程序是不需要许可的。售卖或出版书中示例的D-ROM需要我们的许可。引用本书回答问题以及引用示例代码不需要我们的许可。将本书的大量示例代码用于你的产品文档中需要许可。

内容概要

  细节决定成败,思路清晰、言简意赅的代码让程序员一目了然;而格式凌乱、拖沓冗长的代码让程序员一头雾水。除了可以正确运行以外,优秀的代码必须具备良好的可读性,编写的代码要使其他人能在最短的时间内理解才行。本书旨在强调代码对人的友好性和可读性。
本书关注编码的细节,总结了很多提高代码可读性的小技巧,看似都微不足道,但是对于整个软件系统的开发而言,它们与宏观的架构决策、设计思想、指导原则同样重要。编码不仅仅只是一种技术,也是一门艺术,编写可读性高的代码尤其如此。如果你要成为一位优秀的程序员,要想开发出高质量的软件系统,必须从细处着手,做到内外兼修,本书将为你提供有效的指导。
  ·简化命名、注释和格式的方法,使每行代码都言简意赅。
  ·梳理程序中的循环、逻辑和变量来减小复杂度并理清思路。
  ·在函数级别解决问题,例如重新组织代码块,使其一次只做一件事。
  ·编写有效的测试代码,使其全面而简洁,同时可读性更高。

作者简介

  Dustin
Boswell毕业于加州理工大学,资深软件工程师,在Google就职多年,负责Web爬虫和程序设计相关的工作。他专注于前端、后端,服务器架构、机器学习、大数据、系统和网站等技术领域的研究和实践,经验十分丰富。他现在是MyLikes的软件工程师。
  Trevor
Foucher资深软件工程师和技术经理,先后在Microsoft和Google工作了数十年,在Microsoft担任软件工程师、技术经理以及安全产品技术主管,在Google从事广告应用开发和搜索基础结构研发相关的工作。

书籍目录

前言
第1章 代码应当易于理解
  是什么让代码变得“更好”
  可读性基本定理
  总是越小越好吗
  理解代码所需的时间是否与其他目标有冲突
  最难的部分
第一部分 表面层次的改进
 第2章 把信息装到名字里
  选择专业的词
  避免像tmp和retval这样泛泛的名字
  用具体的名字代替抽象的名字
  为名字附带更多信息
  名字应该有多长
  利用名字的格式来传递含义
  总结
 第3章 不会误解的名字
  例子:Filter()
  例子:Clip(text, length)
  推荐用first和last来表示包含的范围
  推荐用begin和end来表示包含/排除范围
  给布尔值命名
  与使用者的期望相匹配
  例子:如何权衡多个备选名字
  总结
 第4章 审美
  为什么审美这么重要
  重新安排换行来保持一致和紧凑
  用方法来整理不规则的东西
  在需要时使用列对齐
  选一个有意义的顺序,始终一致地使用它
  把声明按块组织起来
  把代码分成“段落”
  个人风格与一致性
  总结
 第5章 该写什么样的注释
  什么不需要注释
  记录你的思想
  站在读者的角度
  最后的思考——克服“作者心理阻滞”
  总结
 第6章 写出言简意赅的注释
  让注释保持紧凑
  避免使用不明确的代词
  润色粗糙的句子
  精确地描述函数的行为
  用输入/输出例子来说明特别的情况
  声明代码的意图
  “具名函数参数”的注释
  采用信息含量高的词
  总结
第二部分 简化循环和逻辑
 第7章 把控制流变得易读
  条件语句中参数的顺序
  if/else语句块的顺序
  ?:条件表达式(又名“三目运算符”)
  避免do/while循环
  从函数中提前返回
  臭名昭著的goto
  最小化嵌套
  你能理解执行的流程吗
  总结
 第8章 拆分超长的表达式
  用做解释的变量
  总结变量
  使用德摩根定理
  滥用短路逻辑
  例子:与复杂的逻辑战斗
  拆分巨大的语句
  另一个简化表达式的创意方法
  总结
 第9章 变量与可读性
  减少变量
  缩小变量的作用域
  只写一次的变量更好
  最后的例子
  总结
第三部分 重新组织代码
 第10章 抽取不相关的子问题
  介绍性的例子:findClosestLocation()
  纯工具代码
  其他多用途代码
  创建大量通用代码
  项目专有的功能
  简化已有接口
  按需重塑接口
  过犹不及
  总结
 第11章 一次只做一件事
  任务可以很小
  从对象中抽取值
  更大型的例子
  总结
 第12章 把想法变成代码
  清楚地描述逻辑
  了解函数库是有帮助的
  把这个方法应用于更大的问题
  总结
 第13章 少写代码
  别费神实现那个功能——你不会需要它
  质疑和拆分你的需求
  保持小代码库
  熟悉你周边的库
  例子:使用Unix工具而非编写代码
  总结
第四部分 精选话题
 第14章 测试与可读性
  使测试易于阅读和维护
  这段测试什么地方不对
  使这个测试更可读
  让错误消息具有可读性
  选择好的测试输入
  为测试函数命名
  那个测试有什么地方不对
  对测试较好的开发方式
  走得太远
  总结
 第15章 设计并改进“分钟/小时计数器”
  问题
  定义类接口
  尝试1:一个幼稚的方案
  尝试2:传送带设计方案
  尝试3:时间桶设计方案
  比较三种方案
  总结
  附录 深入阅读

章节摘录

版权页: 插图: 然后,随着项目的增长,你的目录中加进了越来越多的源文件。很快你就需要多个目录来组织它们了。很难再记得哪个函数调用了哪个函数,而且跟踪bug也要做多一点的工作。 最后,你就有了很多源代码分布在很多不同的目录中。项目很大,没有一个人自己全部理解它。增加新功能变得很痛苦,而且使用这些代码很费力还令人不快。 我们所描述的是宇宙的自然法则——随着任何坐标系统的增长,把它粘合在一起所需的复杂度增长得更快。 最好的解决办法就是"让你的代码库越小,越轻量级越好",就算你的项目在增长。那么你就要: •创建越多越好的"工具"代码来减少重复代码(见第10章)。 •减少无用代码或没有用的功能(见下图)。 •让你的项目保持分开的子项目状态。 •总的来说,要小心代码的"重量"。让它保持又轻又灵。 园丁经常修剪植物以让它们活着并且生长。同样地,修剪掉碍事和没用的代码也是个好主意。 一旦代码写好后,程序员往往不情愿删除它,因为它代表很多实际的工作量。删掉它可能意味着承认在上面所花的时间就是浪费。不要这么想!这是一个有创造性的领域——摄影家、作者和电影制版人也不会保留他们所有的工作。 删除独立的函数很简单,但有时"无用代码"实际上交织在你的项目中,你并不知情。下面是一些例子: •你一开始把系统设计成能处理多语言文件名,现在代码中到处都充满了转换代码。然而,那段代码不能很好地工作,实现上你的程序也从来没有用到过任何多语言文件名。 •为什么不删除这个功能呢? •你希望你的程序在内存耗尽的情况下仍能工作,因此你有很多耍小聪明的逻辑来试着从内存耗尽的情况下恢复。这是个好主意,但在实践中,当系统内存耗尽时,你的程序将变成不稳定的僵尸——所有的核心功能都不可用,再点一下鼠标它就死了。 为什么不通过一句简单的提示"系统内存不足,抱歉"并删除所有内存不足的代码,终止程序呢?


编辑推荐

《编写可读代码的艺术》写出的代码能让人快速理解、轻松维护、容易扩展的程序员才是专业的程序员。《编写可读代码的艺术》简化命名、注释和格式的方法,使每行代码都言简意赅;梳理程序中的循环、逻辑和变量来减小复杂度并理清思路;编写有效的测试代码,使其全面而简洁,同时可读性更高。

名人推荐

"软件开发的一个重要部分是要意识到你的代码以后将如何影响查看这些代码的人。两位作者高屋建瓴,带你领略这一挑战的各个方面,并且使用有指导意义的例子来解释细节。" ——Michael Hunger,软件开发人员

图书封面

图书标签Tags

广告

下载页面


编写可读代码的艺术 PDF格式下载



在infoq上看到过介绍这本书的英文版,后来微博上看到翻译版出了,便收藏一本。
国内没有多少人能够明白代码是需要可读性的,大家都只忙于埋头加班、干活,很少有人像国外那些顶级的程序员那样沉下心来思考编程这件事情。
希望这本书能对我有所帮助


里面有非常多的实践经验
照做肯定会对代码的可读性有很大的提高
写的代码,不仅要让自己读得懂,也要让别人读得懂


从书本里描述的代码规范方式,让我受益良多。很多时候自己编写的片段,在几个月之后自己都不想回头看。需要增加代码的可读性,在这本书里有我需要的方法和规范形式。


非常简洁的语言(从翻译那里可以看出来)配上十分到位的漫画,让这本书讲的内容非常容易被理解,程序猿都该好好看一看,写代码是一种艺术


正想对自己的团队对于代码整洁度安排个有针对性的培训和要求,整好看到这本书,感觉挺好,对于代码整洁的要求,更多的还是应该着眼于长远项目的长远看;肯定短时间内会影响开发效率,但是从长远看,对于开发效率以及跟人的成长帮助很大的关键还是习惯的改变。


其实很希望有一门代码欣赏课,提供一些对编写代码深层次的思考。希望本书有所帮助。


在代码的书写格式上有了新的理解,受益匪浅


书本很薄,但是内容却是非常好,怎样编写出优雅的代码。


详细的介绍了,平时中遇到的一些代码风格~边看边审阅自己的代码,会有不少帮助~


非常值得读的一本书,对于编码的质量有很大的提升


这本书是编程方面的经典之作,值得多读!!


对于码农来说,这本书应该是常用的案头书,时常温故而知新。


经典,很好的书,好好学习哈


还在学习,还是提到了不少应该注意的地方


正在受益中


书很新,还带着外面的塑封皮,内容应该也不错


不错哦~~~晚上回家看


内容实在,分析在理。虽然书很薄,但受益匪浅。 出版社的定价太贵!


it农民工啊


可读性自查可以提升代码品质。精彩内容:一致的风格比“正确”的风格更重要。


很多时候面对代码总觉得枯燥乏味。为什么不当做艺术品来雕琢呢?
写一份自己满意的代码,每优化一次,都会有一种喜悦。
正如书名可读代码的艺术。
我喜欢。


看过代码大全,感觉这是代码小全,代码大全本身是很不错的书,所以这本也不会太差。结合作者在一些大公司工作的经验,给出例子来讲解,也算比较好看,有营养的。


不错的书,不过定价太高了点


朋友说 写的很有意思,挺不错的一本书。


参考书,提高一下


他们说不错,很值得一读


作者给出的建议都非常好,但译者却把书翻译的很差,很多不符合中文的语法习惯。。。少数句子读起来很别扭甚至不知道在讲什么


贴近实践,很实用


送货时间还准时,就是那么薄的书43块太贵了。。。


书还可以~不过寄过来的书有个角被磨的很厉害~


读的内容太浅,字体读起来也不是很好,可能以为中文与英文一样,显得作者对中文版太不用心。个人觉得不值这个价钱,一两天就能读完。


kindle版本代码没有格式啊~~我去,这个很重要啊~!以后不买kindle版的技术书籍了!


之前也看过一些《代码整洁之道》这样的书,这本书明显会比较浅显易懂,而且大多问题都在实际开发中遇到过。实践性很强,例子很多,非常实用。书不厚,但适宜反复阅读,插图也很有趣。


书的内容十分简单,但是,语言十分精炼、富有启发。适合编程初学者也适合我这样3年的


就是太特么贵了,这么薄薄的一本。。。


内容上讲的不错,能有一定的启发作用,但是没关联的插图太多,字体也太大,一本书其实内容很少,价格还那么贵~


看到好多人推荐,买来看了一下,还不错。


虽然书很薄,也贵,不过里面的内容还是很值得一看,尤其是经常纠结命名的孩子


有趣,易懂,例子比较贴合实际,推荐做程序开发的都看看。唯一可惜的是书的内容比较少,很快就看完了。


很详细 只是闲暇时随便翻翻 但是对我编码风格影响挺大的 同事夸我写代码讲究 其实都是从上面学来的


很好的一本书,讲的是代码的可读性,中文翻译的也很棒


几乎可以说是程序员必看的一本书, 从另外一个角度诠释了编程.而且本书生动易懂, 十分推荐


书不错,讲的都是简单容易做到的的东西


通俗易懂,比《clean code》写的要浅淡更容易懂


内容精练,且较为使用,每章结束有小结。


太薄了,感觉不值这个价格,掉一星,。内容值得隔一段时间回头看,养成好的编码习惯很重要


教你如可定义变量


编写可读代码的艺术


非常棒非常好


只要想要总是很快能到手


书评推荐的,买来学习


相关图书