《Effective Ruby:改善Ruby程序的48条建议》一导读

简介: 学习一门新的编程语言通常需要经过两个阶段。第一阶段是学习这门编程语言的语法和结构。如果我们具有其他编程语言的经验,这个阶段通常只需要很短的时间。以Ruby为例,接触过其他面向对象语言的程序员对Ruby的语法也会比较熟悉。有经验的程序员对于语言的结构(如何根据语法构建应用程序)是很熟悉的。


37e41070596c7762d96cdb7d80c74df45797ef83

前 言

学习一门新的编程语言通常需要经过两个阶段。第一阶段是学习这门编程语言的语法和结构。如果我们具有其他编程语言的经验,这个阶段通常只需要很短的时间。以Ruby为例,接触过其他面向对象语言的程序员对Ruby的语法也会比较熟悉。有经验的程序员对于语言的结构(如何根据语法构建应用程序)是很熟悉的。
在第二阶段则需要更多的努力。这个阶段也是你深入语言、学习语言风格的时候,许多编程语言在解决常见的问题时都使用了独一无二的方法,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版本,则示例代码可在所有支持的版本上运行。
关于代码风格的注释

目 录

第1章 让自己熟悉Ruby
第1条:理解Ruby中的True
第2条:所有对象的值都可能为nil
第3条:避免使用Ruby中古怪的Perl风格语法
第4条:留神,常量是可变的
第5条:留意运行时警告
第2章 类、对象和模块
第6条:了解Ruby如何构建继承体系
第7条:了解super的不同行为
第8条:初始化子类时调用super
第9条:提防Ruby最棘手的解析
第10条:推荐使用Struct而非Hash存储结构化数据
第11条:通过在模块中嵌入代码来创建命名空间
第12条:理解等价的不同用法
第13条:通过"<=>"操作符实现比较和比较模块
第14条:通过protected方法共享私有状态
第15条:优先使用实例变量而非类变量
第3章 集合
第16条:在改变作为参数的集合之前复制它们
第17条:使用Array方法将nil及标量对象转换成数组
第18条:考虑使用集合高效检查元素的包含性
第19条:了解如何通过reduce方法折叠集合
第20条:考虑使用默认哈希值
第21条:对集合优先使用委托而非继承
第4章 异常
第22条:使用定制的异常而不是抛出字符串
第23条:捕获可能的最具体的异常
第24条:通过块和ensure管理资源
第25条:通过临近的end退出ensure语句
第26条:限制retry次数,改变重试频率并记录异常信息
第27条:throw比raise更适合用来跳出作用域
第5章 元编程
第28条:熟悉Ruby模块和类的钩子方法
第29条:在类的钩子方法中执行super方法
第30条:推荐使用def?ine_method而非method_missing
第31条:了解不同类型的eval间的差异
第32条:慎用猴子补丁
第33条:使用别名链执行被修改的方法
第34条:支持多种Proc参数数量
第35条:使用模块前置时请谨慎思考
第6章 测试
第36条:熟悉单元测试工具MiniTest

相关文章
|
测试技术 C++ Ruby
C++程序中嵌入Ruby脚本系统
Ruby,一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。
1562 0
|
消息中间件 安全 Ruby
Nanite:Ruby程序的一个自我装配集群
本文讲的是Nanite:Ruby程序的一个自我装配集群,Nanite(由Ezra Zygmuntowicz开发)是Engine Yard云计算策略的一个新兵:它是“Ruby程序的一个自我装配集群”,用以构筑高度可伸缩的Web应用的后端。
1096 0
|
NoSQL 数据库 Ruby
我的第一个Ruby On Rails + MongoDB程序
    最近想进一步学习一下MongoDB,而很久之前使用过ROR,正好也凑个机会重新拾起来。下面是建立第一个项目的过程。        主要参考文档:        1. Rails 3 - Getting started        2.
926 0
|
Apache Ruby Windows
让Apache支持ruby写的cgi程序
ruby apache cgi 配置 1,按说明安装ruby的apache mod 2,配置文件如下: 1 ######################################################### 2 # ruby cgi 配置 3 #######...
760 0
|
Ruby
Ruby On Rails学习笔记(3)——Rails程序由0到1
     正如Rails的理念一样,创建一个新的Rails应用程序的过程非常简单,下面就来看看如何从0到1建立一个全新的Rails应用程序。     1、启动InstantRails,打开其Rails应用程序管理器(Rails Application Manager):         2、创建...
743 0
|
2月前
|
Ruby
|
1月前
|
数据采集 Web App开发 数据处理
Ruby网络爬虫教程:从入门到精通下载图片
Ruby网络爬虫教程:从入门到精通下载图片