编辑推荐

适读人群:程序员、动态语言编程爱好者
  元编程是Ruby世界的如意金箍棒,只有能驾驭它的人才能充分发挥其潜力。
  《Ruby元编程(第2版)》在大量剖析实例代码的基础上,详细讲解了33种元编程技巧。
  读者不仅能学到对象模型、作用域、单件类、代码块等元编程概念,还将学习Rails的组织结构和工作原理,以及如何借助元编程编写领域专属语言。
  第2版更新Ruby2.0、Ruby2.1内容,大部分示例代码取自流行的软件框架和类库,包括Rails4。

内容简介

  《Ruby元编程(第2版)》在大量剖析实例代码的基础上循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby类库的实现细节,作者不仅向读者展示了元编程的优势及其解决问题的方式,更详细列出33种发挥其优势的编程技巧。《Ruby元编程(第2版)》堪称动态语言设计模式。Ruby之父松本行弘作序推荐。

作者简介

  PaoloPerrotta,有超过15年的软件设计和开发经验,他开发过嵌入式软件、企业级软件、计算机游戏和web应用,还发表过上百篇技术文章。他在欧洲各国教授敏捷课程,过着游牧般的生活。

目录

第一部分Ruby元编程
第1章元这个字眼
1.1鬼城与自由市场
1.2程序员Bob的故事
1.3元编程和Ruby
第2章星期一:对象模型
2.1打开类
2.2类的真相
2.3小测验:缺失的连接线
2.4调用方法时发生了什么?
2.5小测验:混乱的模块
2.6对象模型小结
第3章星期二:方法
3.1代码繁复的问题
3.2动态方法
3.3method_missing方法
3.4小测验:消灭Bug
3.5白板类
3.6小结
第4章星期三:代码块
4.1学习代码块
4.2小测验:Ruby的#符号
4.3代码块是闭包
4.4instance_eval方法
4.5可调用对象
4.6编写领域专属语言(DSL)
4.7小测验:改良的DSL
4.8小结
第5章星期四:类定义
5.1揭秘类定义
5.2小测验:Taboo类
5.3单件方法
5.4单件类
5.5小测验:模块的麻烦
5.6方法包装器
5.7小测验:打破数学规律
5.8小结
第6章星期五:编写代码的代码
6.1通向周末的编程之路
6.2Kernel#eval方法
6.3小测验:校验过的属性(第一步)
6.4小测验:校验过的属性(第二步)
6.5小测验:校验过的属性(第三步)
6.6小测验:校验过的属性(第四步)
6.7钩子方法
6.8小测验:校验过的属性(第五步)
6.9小结
第7章尾声
第二部分Rails中的元编程
第8章准备Rails之旅
8.1RubyonRails
8.2安装Rails
8.3Rails源代码
第9章ActiveRecord的设计
9.1简短的ActiveRecord示例
9.2ActiveRecord的组成
9.3经验之谈
第10章ActiveSupport的Concern模块
10.1Concern模块出现之前
10.2ActiveSupport::Concern模块
10.3经验之谈
第11章alias_method_chain方法沉浮录
11.1alias_method_chain方法的兴起
11.2alias_method_chain方法的衰亡
11.3经验之谈
第12章属性方法的发展
12.1属性方法实战
12.2属性方法的发展史
12.3经验之谈
第13章最后的思考
元编程不过是编程
第三部分附录
附录A常见惯用法
A.1拟态方法
A.2空指针保护
A.3SelfYield
A.4Symbol#to_proc方法
附录B领域专属语言
B.1关于领域专属语言
B.2内部和外部领域专属语言
B.3领域专属语言和元编程
附录C法术手册
索引

精彩书摘

  元编程……听起来很酷!好像是一种用于高级企业架构的设计方法。
  事实上,元编程并非一个抽象的概念,它是一系列务实的编程技巧。在Ruby中,你可以用它完成如下一些工作。
  假设你要写一个Ruby程序来连接外部系统(web服务或者Java程序),你可以用元编程写一个包装器用于接受任何方法的调用,然后把这些调用转发给外部系统。如果某人后来为这个外部系统添加了方法,即使不修改Ruby包装器,它也能自动支持新加入的方法。很神奇吧!
  假设你遇到一类问题,需要设计某种领域专属语言来解决。如果你从头定义这门语言,并且自己编写解析器,工作量就太大了。你可以把Ruby改造成处理这个问题的专属语言。你甚至可以写一个简单的解释器从文件中读取这种基于Ruby语言的代码。
  你可以把Ruby程序的简洁性提高到Java程序员做梦都不敢想的程度。比如一个包含20个方法的类,这些方法的名字看起来都差不多。元编程只用几行代码就能定义这些方法。如果你想调用一长串名字遵循一定的模式(比如名字都以test开头)的方法,元编程只用一行代码就能调用它们。
  你可以改造Ruby使之满足你的需要,而不是去适应语言本身。例如,可以用你喜欢的方式增强任何一个类(包括Array这样的核心类);可以把想要监控的方法封装起来,当他人继承你的类后,就会执行你预先设定的代码……
  ……

前言/序言

  Ruby的很多特性继承自其他语言,这些语言包括Lisp、Smalltalk、C、Perl等。它的元编程特性来自于Lisp和Smalltalk。元编程有点像魔法,看起来让人震惊。世界上有两种的魔法:好的白魔法和坏的黑魔法。同样,元编程也有两面性:你可以用元编程增强语言的功能,还可以创建领域专属语言;但是你也可能陷入到元编程的陷阱里。元编程是一种容易让人迷惑的技术。
  Ruby相信你是一位成熟的程序员,它赋予你元编程这样强大的能力。但是你必须记住:能力越大,责任就越大。
  请尽情享受Ruby编程吧!
  ——松本行弘

其他推荐