Effective Ruby:编写高质量Ruby代码的48个有效方法 英文版
  • 推荐0
  • 收藏0
  • 浏览122

Effective Ruby:编写高质量Ruby代码的48个有效方法 英文版

(美)Peter J. Jones(彼得·J·琼斯) (作者)  无 (译者) 刘芸 (责任编辑)

  • 丛  书:原味精品书系
  • 书  号:978-7-121-27306-3
  • 出版日期:2016-04-05
  • 页  数:232
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Effective Ruby: 48 Specific Ways to Write Better Ruby,1E
  • 原书号:0133846970
  • 维护人:刘佳禾
本书是作者Peter J. Jones近十年Ruby开发经验的结晶。他利用48个Ruby实战案例,揭示了Ruby鲜有人知的特点、难点和习惯用法。每种实践案例都包含了具体的、实用的、组织清晰的指导方针,细致的建议,详细的专业理由,并通过示例代码阐明。
本书为Ruby开发的每个主要领域都提供了切实可行的建议,从模块到内存,再到元编程。旨在通过全面地介绍Ruby编程技术,帮助Ruby程序员及爱好者写出更健壮、更高效、更易维护的和运行的代码。适合Ruby程序员及爱好者阅读。
48个Ruby实战案例,10年Ruby开发经验结晶,具体|实用|组织清晰的专家级指导
序言
当受邀对一本关于Ruby的书进行技术审核并为其作序时,我有点不知所措。市面上已经有不少Ruby相关的书籍,从入门到深入Ruby VM内部实现机制已经面面俱到。我当时想,“这本Ruby书能与众不同吗?”但是我同意先通读一遍。令我吃惊的是,这的确是一本出色并且新颖的书籍。它和其他Ruby书籍很不一样,我觉得不管是谁,初学者亦或专家,只要将其读完,都会成为更加出色的Ruby编程人员。
从我开始接触Ruby到现在已经十几年了。这些年里,Ruby已经成为一门成熟的语言。早期,它也经历过过度宣传的阶段,当时Ruby被吹捧为结束一切、造就一切的语言。随后涌现了很多版本的Ruby库,当时感觉库几乎每天都会被废弃然后重建,没有一个库可以保证是最新的。后来,其他“新一代”语言开始涌现,Ruby被定位为过时的语言。但是现在,最终,Ruby通过解决很多实际问题,证明了自己是一门实用且有效的语言,虽然它并不能解决所有问题。(你不会想用Ruby编写另外一个大型操作系统。)
本书除了介绍基本语法和高级使用方法外,还重点介绍了上佳实践,讲述如何编写不会崩溃、可维护、高效快速的Ruby应用程序。Ruby初学者通过学习上佳实践能够更好地理解语言,而有经验的开发人员可以重新审视他们的实践经验,并能够学习一些新的技巧。
我很喜欢本书的行文方式:大量示例,并且示例不仅解释“是什么”和“如何做”,而且解释了“为什么”。虽然这些都是Ruby社区多年发展积累下来的上佳实践,但是保持怀疑、提出问题仍然很重要,旧实践上的改进很可能产出新的上佳实践。
希望你能从本书中收获良多,也真心希望在阅读了本书几百页的内容之后,你能成长为一名Ruby程序员。
Mitchell Hashimoto
HashiCorp的创始人和CEO,Vagrant的作者

前言
学习一门新的编程语言通常需要经历两个阶段。第一阶段是花费时间学习语义和语言的结构。如果之前有学习新编程语言的经验,那么这一阶段通常很短。以Ruby为例,它的语法和其他面向对象语言非常相似。语言的结构——如何基于语法构建出程序——对于有经验的程序员而言也十分类似。
另一方面,第二阶段可能需要花费更多的时间。这一阶段需要深入语言,学习其常用模式。大部分语言在解决通用问题上都有独特的方式,Ruby也是这样。比如,Ruby使用block和iterator模式来替代显式循环。学习如何使用“Ruby的方式”来解决问题,并同时避免严重错误,是这一阶段的重点。
这也是本书要解决的问题。但是本书不是一本介绍性图书。书中假定读者已经完成了Ruby学习的第一阶段——已经学会了其语法和结构。本书的目标是让读者学习到Ruby语言的精髓,以及如何编写更为可靠且易于维护的高效代码。同时,本书也会介绍Ruby解释器内部的工作原理,了解这些知识有助于编写出更加高效的程序。
Ruby的实现和版本
众所周知,Ruby社区有很多积极的贡献者。他们在各种各样的项目里工作,包括 Ruby解释器的不同实现。除了官方的Ruby解释器(即MRI),还有另外一些解释器可以选择。如果你需要将Ruby应用程序部署到已经配置好用来运行Java应用程序的生产服务器上,别担心,这正是JRuby所解决的问题。其他领域情况如何?Ruby应用程序能否放到智能手机和平板设备里?同样也有相应的Ruby实现。
Ruby实现有多种选择,这是Ruby活跃并且健康的标志。当然,这些实现都有独特的内在方式。但是从编写Ruby代码的程序员的角度来看,这些不同的解释器的行为和MRI都非常类似,无须担心它们之间的差异。
本书的大部分内容适用于所有这些各异的Ruby实现。唯一需要注意的是Ruby内部细节介绍,比如垃圾回收工作机制。在这些领域,本书介绍基于官方Ruby实现——MRI。当书中提到某个特定Ruby版本的时候,你就会知道我们在讨论特定于MRI相关的事情。
关于特定版本,本书的所有代码都支持Ruby 1.9.3及更高版本。撰写本书时,Ruby 2.1是最新版本,Ruby 2.2正在开发中。如果本书内容没有特别提及某个版本,那么样例代码在所有支持的版本上都能工作。
风格介绍
Ruby程序员大部分时候使用相同的方式格式化Ruby代码。甚至有一些Ruby-Gem可以帮助检查代码,在格式不满足预设定的风格规则时给出提示。特别提到这一点是因为本书示例代码所选的风格和大家通常选择的风格有些不同。
当调用某个方法并传递参数时,书中使用圆括号括住参数,在左圆括号和方法之间没有空格。实际使用中,经常能看到调用方法时并没有使用圆括号,这是因为Ruby并不强制要求使用圆括号。但是正如本书第1章所述,在一些情况下忽略圆括号会导致代码意思模糊,反而会要求Ruby来猜测你的真实意图。因为这些可能造成歧义,所以我认为忽略圆括号的习惯很不好,需要在社区里呼吁大家注意这个问题。
使用圆括号的另一个原因是能够在标识符是方法调用(而不是关键字)时清楚地表明之。有时你可能会把是方法调用的标识符误认为是关键字(比如require),使用圆括号能够帮助辨明这样的情况。
既然这一节在讨论风格问题,必须说明的一点是,在本书中提到方法时,会使用RI notation。如果你还不熟悉RI notation,可以自行了解,它易学且非常有用。其最大的作用是区分类和实例方法。当涉及类的方法时,本书会用两个冒号(::)分隔类名和方法。比如,File::open表示open类方法来自于File类。类似地,实例方法用井号(#)分隔类名和实例方法名(比如Array#each)。同样的风格也应用于模块方法(比如GC::stat)和模块实例方法(比如Enumerable#grep)。第40项详细介绍了RI notation,以及如何使用它来查找方法文档。了解了本节上述的基础介绍之后就完全可以开始阅读本书了。
如何获得源代码
本书会介绍很多样例源代码。为了更容易理解吸收,代码通常会被分割成小段,每次分析其中一段。也有些时候会跳过一些不重要的代码。有时也需要查看所有代码来实现整体理解,因此,所有本书展示的代码都能在http://effectiveruby.com里找到。
致谢
能够写出大家愿意花时间阅读且愿意花钱购买的书籍不是我一个人的功劳。实际上,除了为本书直接做出贡献的人,还有很多人以这样那样的方式为本书默默奉献。比如,我的朋友Michael Garriss不会意识到,正是他鼓励我学习Ruby,才有了本书的问世。当年他肯定不会想到我会将他从一个公司拽到另一个公司,去介绍Ruby的每一个细节。然而,这的确发生了。
可能这样做有些奇怪,但是我还是想借此机会感谢曾经为开源社区贡献时间和创造力的所有人。撰写本书时所使用的每一个工具,包括那些我专门为此创建的工具,都是开源项目。如果我无法查看Ruby解释器和本书所讨论的gem的源码,就不可能完成本书。我花费了很多时间研究代码,仔细分析,做实验,过程中也曾哭泣。最终,事实证明这所有的付出都是值得的。
当然,如果没有那些慷慨的自愿和我一起工作的人们,这本书不会这么有价值。一些人放弃了他们的空闲时间来帮助我审查本书的初稿,并且给了我很多非常有用的反馈。Isaac Foraker、Timothy Clayton,以及我的妻子Shanna Jones,花了大量时间阅读本书并且验证本书代码的正确性。非常感谢你们的帮助。
Bruce Williams和Bobby Wilson担任了本书的技术审稿人,可能一开始他们没有意识到将要付出多少精力。他们帮助我改进了本书的样例及其解释。当我由于别人干涉我的工作而过分焦虑时,也是他们鼓励了我。
Pearson的所有工作人员都为本书竭尽全力。Trina MacDonald、Olivia Basegio和Songlin Qiu都给予了我非常耐心的帮助,最终将本书塑造成了现在的模样。在这个项目里我收获良多,很大一部分成果应该归功于他们。
Scott Meyers是我的偶像,和他一起工作是我梦寐以求的事。在20世纪90年代末,我阅读了Scott的Effective C++,这本书改变了我的编程方式。它也启发了我如何将知识有效地教给别人。将我的成果交给Scott审核时我非常忐忑,但是Scott给了我无尽的鼓励和帮助。谢谢你,Scott。
我的妻子,Shanna Jones,一直给予我无私的鼓励和理解。明知写作此书会占用很多我陪伴她的时间,她仍然督促我写完这本书。Shanna,你教会了我很多东西。谢谢你一直以来的支持。

目录

目录 阅读
Chapter 1: Accustoming Yourself to Ruby
Chapter 2:Classes, Objects, and Modules
Chapter 3: Collections
Chapter 4: Exceptions
Chapter 5:Metaprogramming
Chapter 6: Testing
Chapter 7:Tools and Libraries
Chapter 8:Memory Management and Performance

读者评论

同系列书

  • Clean Architecture:软件架构与设计匠艺(英文版)

    Robert C. Martin (作者) Robert C. Martin(罗伯特·C·马丁) (译者)

    马丁的简介代码不仅仅是提供选项。在半个世纪的软件环境中,每一种可以想象的类型,马丁告诉你做出什么选择,以及为什么它们对你的成功至关重要。正如你所渴望的,这本书中...

     
  • Effective Java(第2版)英文版

    (美)Joshua Bloch(约书亚·布洛赫) (作者) 无 (译者)

    本书通过78个有效案例,旨在帮助读者深入理解Java,以写出更加清楚、健壮、可重复使用的代码。书中每个章节均包含小论文,针对Java平台和杰出的代码样例,提供了...

    ¥65.00
  • C11编程导论英文版

    (美)Paul Deitel(保罗·戴特尔),(美) Harvey Deitel(哈维·戴特尔) (作者) (译者)

    本书沿用了Deitel特色的“程序实况解说”,深入探讨了C语言和C标准库。通过完整的语法着色、代码高亮、代码演练和程序输出,全面地介绍了测试程序的概念。本书汇集...

    ¥89.00
  • Effective Javascript:编写高质量JavaScript代码的68个有效方法 英文版

    (美)David Herman(大卫·赫尔曼) (作者) 无 (译者)

    本书由资深 JavaScript 技术专家 David Herman 所著。书中基于 JavaScript 标准的新版本前所未有地阐明了 JavaScript ...

    ¥65.00
  • Effective Python:编写高质量Python代码的59个有效方法 英文版

    (美)Brett Slatkin(布雷特·斯拉特金) (作者) 无 (译者)

    本书不是要讲述 Python 的基础编程,而是要帮你掌握 Python 独特的优势和魅力。书中总结了 59个 Python 编程的优秀实践、贴士和捷径,并用真实...

    ¥65.00

相关图书

看漫画学Python:有趣、有料、好玩、好用(全彩版)

关东升、赵大羽 (作者)

Python是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要,成为国家计算机...

¥62.30

少博士趣学Python

周安琪 (作者)

本书是一本针对中国青少年的Python入门编程书,内容包括基本的Python语法和编程概念、关于信息世界的故事、算法的简介以及对计算性思维的练习。本书从浅显的示...

¥49.90

Laravel入门与实战:构建主流PHP应用开发框架

Matt Stauffer (作者) 韦玮 (译者)

本书从基础开始详细地讲解了Laravel开发框架。本书对Laravel框架进行了系统的介绍,包括Laravel的背景、Laravel开发环境的搭建、路由与控制器...

¥78.00

Python与量化投资:从基础到实战

王小川 (作者)

本书主要讲解如何利用Python进行量化投资,包括对数据的获取、整理、分析挖掘、信号构建、策略构建、回测、策略分析等。本书也是利用Python进行数据分析的指南...

¥59.00

SAFe 4.0精粹:运用规模化敏捷框架实现精益软件与系统工程

Richard Knaster、 Dean Leffingwell (作者) 李建昊等 (译者)

  本书基于规模化敏捷框架的完整结构,提纲挈领地介绍了其核心内容,同时给出了在企业环境中实施SAFe 的路线图。本书聚焦在提炼SAFe 4.0 版本的精粹,旨在...

¥99.00

PHP7内核剖析

秦朋 (作者)

PHP作为最流行的语言之一,自第一个版本发布至今的二十几年里经历了多次重大改进,PHP7版本最大的特色在于其性能上的突破,比PHP5快了一倍。目前PHP7已经得...

¥89.00