基本信息
- 作者: (美)彼得 J.琼斯(Peter J. Jones)
- 译者: 杨政权 秦五一 孟樊超
- 丛书名: Effective系列丛书
- 出版社:机械工业出版社
- ISBN:9787111521242
- 上架时间:2015-12-17
- 出版日期:2016 年1月
- 开本:16开
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > Rails/Ruby

编辑推荐
“Effective Software Development Series"系列经典著作,Amazon全五星评价
从模块、内存到元编程,全面总结和探讨Ruby编程中48个鲜为人知和容易被忽视的特性与陷阱
包含大量实用范例代码,为编写易于理解、便于维护、易于扩展和高效的Ruby应用提供了解决方案
内容简介
计算机书籍
如果你是经验丰富的Rub程序员,本书能帮助你发挥Ruby的全部力量来编写更稳健、高效、可维护和易执行的代码。Peter J.Jones凭借其近十年的Ruby开发经验,总结出48条Ruby的最佳实践、专家建议和捷径,并辅以可执行的代码实例。
Jones在Ruby开发的每个主要领域都给出了实用的建议,从模块、内存到元编程。他对鲜为人知的Ruby方言、怪癖、误区和强力影响代码行为与性能的复杂性的揭示贯穿全书。
每一条都包括具体的、可执行的、清晰组织的指南,还有精细的建议、详尽的技术讨论以及启发性的代码实例。如果存在多种可选方案,Jones也会讲解在特定情况下如何选择最优方案。
本书将帮助你系统性地改进代码,不是让你盲从准则,而是通过透彻地理解Ruby编程技术来做到这些。
本书内容包括:
·如何避免Ruby中某些令人惊讶的特质带来的陷阱
·如果想要无障碍使用Rails(或其他大型框架),你需了解的继承体系
·如何通过易被误解的方法来用集合进行非常有用操作
·使用异常来改善代码可靠性的最佳方式
·实用、有效的测试方案,包括MiniTest Unit和Spec Testing
目录
前言
第1章 让自己熟悉Ruby 1
第1条:理解Ruby中的True 1
第2条:所有对象的值都可能为nil 3
第3条:避免使用Ruby中古怪的Perl风格语法 5
第4条:留神,常量是可变的 8
第5条:留意运行时警告 11
第2章 类、对象和模块 15
第6条:了解Ruby如何构建继承体系 16
第7条:了解super的不同行为 21
第8条:初始化子类时调用super 25
第9条:提防Ruby最棘手的解析 28
第10条:推荐使用Struct而非Hash存储结构化数据 31
第11条:通过在模块中嵌入代码来创建命名空间 34
第12条:理解等价的不同用法 38
第13条:通过""操作符实现比较和比较模块 44
第14条:通过protected方法共享私有状态 48
第15条:优先使用实例变量而非类变量 50
第3章 集合 54
前言
在第二阶段则需要更多的努力。这个阶段也是你深入语言、学习语言风格的时候,许多编程语言在解决常见的问题时都使用了独一无二的方法,Ruby也不例外。比如循环,Ruby没有使用显式循环体来实现,而是使用了代码块和迭代器模式。学习如何突破思维定势,用Ruby的方式解决问题是这个阶段的精髓。
本书也将致力于编程语言学习的两个阶段。但本书并不是一本编程语言的入门级书籍。如果你已经完成了第一阶段,即语法和结构的学习,通过本书你将会对Ruby的理解更加深入和全面,编写出更具可读性、可维护性的代码。在这个过程中,我也会介绍Ruby解释器的内部工作原理,并分享编写更高效程序的相关知识。
Ruby的不同实现和不同版本
如你所知,Ruby有一批非常活跃的社区贡献者。他们负责各种各样的项目,其中也包括Ruby解释器的不同实现。除了大家熟知的Ruby官方实现(MRI),我们也有很多其他的选择。想把Ruby应用程序部署到已配置Java环境的机器?没问题,这就是JRuby的用武之地。那Ruby应用程序是否支持智能手机和平板电脑呢?当然,同样也有一款相应的实现。
可以选择的Ruby实现有多种,这也证明了Ruby的活跃性。虽然每种的内部实现都不一样,但对Ruby程序员来说无需太过担心,因为这些解释器的行为和官方的MRI很接近。
本书介绍的很多方法在不同Ruby实现上都是通用的,但也有一些只针对MRI版本,诸如书中提及的垃圾回收机制。本书中指定Ruby特定版本的时候,都是针对MRI版本的。
书中所有代码适用于Ruby 1.9.3及其后的版本。在本书编写时,Ruby最新版本是2.1,Ruby 2.2即将面世。若书中未提及特定的Ruby版本,则示例代码可在所有支持的版本上运行。
关于代码风格的注释
在多数情况下,Ruby程序员喜欢使用单一的风格来格式化Ruby代码。当代码没有按照预定义的风格规则编写时,一些RubyGem甚至能够检测出这些不一致的代码风格并斥责你。之所以提到这件事,是因为本书中示例代码所采用的风格可能与通常情况下使用的略有不同(也可能与你之前的风格不同)。
当调用一个方法(method)并向它传参时,我使用圆括号把参数括起来,而紧跟在方法名之后,中间没有空格。在本书之外,我们很容易看到没有圆括号的方法调用,这可能是由于Ruby传参时并不需要圆括号。但是,在第1章中我们会看到,不使用圆括号传参在某些情况下,会导致代码多义性,这迫使Ruby猜测你的意图。由于存在这种多义性,我认为省略掉圆括号是一种不好的编码习惯,我们需要摒弃这种习惯。
我使用圆括号的另一个原因,是为了清晰地表明一个标识符是方法调用还是关键字。你可能会惊讶地发现,你认为的可能是关键字的东西实际上是个方法调用(例如require)。而使用圆括号有助于说明这一点。
在这里讨论代码风格时,我应该指出,当本书中提及方法时,我会使用RI 标记法。如果你不熟悉RI标记法也没有关系,因为它很容易学习并很有帮助。它的主要目的是区分类方法(class method)与实例方法(instance method)。当写类方法时,我会用双冒号(“::”)放在类名与方法名之间。例如,File::open 是File类中名为open的类方法。同样,当写实例方法时,我会用井号(“#”)放在类名与实例方法名之间(例如Array#each)。上述写法同样适用于模块方法(module method)名(例如GC::stat)与模块实例方法(module instance method)名(例如Enumerable#grep)。本书的第40条建议会涉及RI标记法与使用它查询方法文档的更多细节。不过,上述这点入门足以让你开始本书的旅途了。
下载源代码
本书会深入探讨很多示例代码。为了更容易理解和消化,代码通常将会分割成小的代码片段,我们会一次一小段地进行讲解。有些不重要的细节代码,我们甚至会忽略掉。可以说,有时候一次看完所有的代码对形成宏观理解是很不错的。本书中所有的代码,可以通过本书的网站下载,网址为http://effectiveruby.com。
序言
当我开始使用Ruby时,作为一门语言,它已经在过去十年里成熟了很多。早期,在宣传阶段,Ruby被吹捧为所有语言的终结者和替代者。接着,大量的库出现了,它们似乎每天都在被抛弃和重写,没有哪个可以被信赖为最新版本。随后,其他新的流行语言开始出现,Ruby经历了一个被视为过时语言的阶段。然而,如今,Ruby终于被看作是一种可以解决多种问题的实用、高效的语言,当然,它并不能解决所有的问题,这也是可以理解的。(你当然不会试图用Ruby开发一个大型操作系统。)
相比于成为一本覆盖基本语法或进阶实践的书,这本书巧妙地涵盖了如何写出避免崩溃、易维护且运行快速的Ruby应用程序的最佳实践。它是一本任何Ruby程序员都该读的书。初学者应该学习书中的最佳实践从而更好地认识这门语言,有经验的开发者应该再次审读自己的程序,也许能学习一些新的方法。
这本书采用我最喜欢的方式撰写:辅以大量的例子。这些例子不仅在阐释“是什么”(what)和“怎样做”(how),还阐释了“为什么”(why)。尽管这些最佳实践源于多年来日益成熟的Ruby社区中的精华内容,不过总是保持质疑的态度、提出疑问仍然是很重要的,也许以后能找到新的最佳实践来对原来的加以改进。
祝你阅读愉快,我完全预料到读完这数百页之后你会成长为一个更好的Ruby程序员。
——Mitchell Hashimoto
HashiCorp创始人、CEO,Vagrant创建者
媒体评论
--Mitchell Hashimoto,HashiCprp的创始人、CEO,Vagrant的创建者