編輯推薦
適讀人群 :程序員、動態語言編程愛好者 元編程是Ruby世界的如意金箍棒,隻有能駕馭它的人纔能充分發揮其潛力。
《Ruby元編程(第2版)》在大量剖析實例代碼的基礎上,詳細講解瞭33種元編程技巧。
讀者不僅能學到對象模型、作用域、單件類、代碼塊等元編程概念,還將學習Rails的組織結構和工作原理,以及如何藉助元編程編寫領域專屬語言。
第2版更新Ruby 2.0、Ruby 2.1內容,大部分示例代碼取自流行的軟件框架和類庫,包括Rails4。
內容簡介
《Ruby元編程(第2版)》在大量剖析實例代碼的基礎上循序漸進地介紹Ruby特有的實用編程技巧。通過分析案例、講解例題、迴顧Ruby類庫的實現細節,作者不僅嚮讀者展示瞭元編程的優勢及其解決問題的方式,更詳細列齣33種發揮其優勢的編程技巧。本書堪稱動態語言設計模式。Ruby之父鬆本行弘作序推薦。
作者簡介
Paolo Perrotta,有超過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.3 method_missing方法
3.4 小測驗:消滅Bug
3.5 白闆類
3.6 小結
第4章 星期三:代碼塊
4.1 學習代碼塊
4.2 小測驗:Ruby的#符號
4.3 代碼塊是閉包
4.4 instance_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.2 Kernel#eval方法
6.3 小測驗:校驗過的屬性(第一步)
6.4 小測驗:校驗過的屬性(第二步)
6.5 小測驗:校驗過的屬性(第三步)
6.6 小測驗:校驗過的屬性(第四步)
6.7 鈎子方法
6.8 小測驗:校驗過的屬性(第五步)
6.9 小結
第7章 尾聲
第二部分 Rails中的元編程
第8章 準備Rails之旅
8.1 Ruby on Rails
8.2 安裝Rails
8.3 Rails源代碼
第9章 Active Record的設計
9.1 簡短的Active Record示例
9.2 Active Record的組成
9.3 經驗之談
第10章 Active Support的Concern模塊
10.1 Concern模塊齣現之前
10.2 ActiveSupport::Concern模塊
10.3 經驗之談
第11章 alias_method_chain方法沉浮錄
11.1 alias_method_chain方法的興起
11.2 alias_method_chain方法的衰亡
11.3 經驗之談
第12章 屬性方法的發展
12.1 屬性方法實戰
12.2 屬性方法的發展史
12.3 經驗之談
第13章 最後的思考
元編程不過是編程
第三部分 附錄
附錄A 常見慣用法
A.1 擬態方法
A.2 空指針保護
A.3 Self Yield
A.4 Symbol#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編程吧!
——鬆本行弘
Ruby元編程(第2版) [Metaprogramming Ruby 2] 下載 mobi epub pdf txt 電子書 格式