《Eloquent Ruby》

《Eloquent Ruby》 《Eloquent Ruby》

  • 书名:《Eloquent Ruby》
  • 分类:编程
  • 作者:Russ Olsen
  • 出版社:Addison-Wesley
  • 出版年:2011-2
  • 售价:USD 39.99
  • 装订:Paperback
  • 页码:448

《Eloquent Ruby》 内容介绍:

It's easy to write correct Ruby code, but to gain the fluency needed to write great Ruby code, you must go beyond syntax and absorb the "Ruby way" of thinking and problem solving. In Eloquent Ruby, Russ Olsen helps you write Ruby like true Rubyists do-so you can leverage its immense, surprising power. Olsen draws on years of experience internalizing the Ruby culture and teaching Ruby to other programmers. He guides you to the "Ah Ha!" moments when it suddenly becomes clear why Ruby works the way it does, and how you can take advantage of this language's elegance and expressiveness. Eloquent Ruby starts small, answering tactical questions focused on a single statement, method, test, or bug. You'll learn how to write code that actually looks like Ruby (not Java or C#); why Ruby has so many control structures; how to use strings, expressions, and symbols; and what dynamic typing is really good for. Next, the book addresses bigger questions related to building methods and classes. You'll discover why Ruby classes contain so many tiny methods, when to use operator overloading, and when to avoid it. Olsen explains how to write Ruby code that writes its own code-and why you'll want to. He concludes with powerful project-level features and techniques ranging from gems to Domain Specific Languages. A part of the renowned Addison-Wesley Professional Ruby Series, Eloquent Ruby will help you "put on your Ruby-colored glasses" and get results that make you a true believer.

《Eloquent Ruby》 目录大纲:

Contents
Foreword xix Preface xxi Acknowledgments xxv About the Author xxvii
PART I: The Basics 1
Chapter 1: Write Code That Looks Like Ruby 3
The Very Basic Basics 4 Go Easy on the Comments 6 Camels for Classes, Snakes Everywhere Else 8 Parentheses Are Optional but Are Occasionally Forbidden 9 Folding Up Those Lines 10 Folding Up Those Code Blocks 11 Staying Out of Trouble 12 In the Wild 13 Wrapping Up 15
Chapter 2: Choose the Right Control Structure 17
If, Unless, While, and Until 17 Use the Modifier Forms Where Appropriate 19 Use each, Not for 20 A Case of Programming Logic 21
ix
x Contents
Staying Out of Trouble 23 In the Wild 25 Wrapping Up 27
Chapter 3: Take Advantage of Ruby’s Smart Collections 29
Literal Shortcuts 29 Instant Arrays and Hashes from Method Calls 30 Running Through Your Collection 33 Beware the Bang! 36 Rely on the Order of Your Hashes 38 In the Wild 38 Staying Out of Trouble 40 Wrapping Up 42
Chapter 4: Take Advantage of Ruby’s Smart Strings 43
Coming Up with a String 44 Another API to Master 47 The String: A Place for Your Lines, Characters, and Bytes 49 In the Wild 50 Staying Out of Trouble 51 Wrapping Up 52
Chapter 5: Find the Right String with Regular Expressions 53
Matching One Character at a Time 54 Sets, Ranges, and Alternatives 55 The Regular Expression Star 57 Regular Expressions in Ruby 58 Beginnings and Endings 60
In the Wild 62 Staying Out of Trouble 63 Wrapping Up 64
Chapter 6: Use Symbols to Stand for Something 65
The Two Faces of Strings 65 Not Quite a String 66 Optimized to Stand for Something 67
Contents xi
In the Wild 69 Staying Out of Trouble 70 Wrapping Up 71
Chapter 7: Treat Everything Like an Object—Because Everything Is 73
A Quick Review of Classes, Instances, and Methods 74 Objects All the Way Down 76 The Importance of Being an Object 77 Public, Private, and Protected 79
In the Wild 81 Staying Out of Trouble 82 Wrapping Up 84
Chapter 8: Embrace Dynamic Typing 85
Shorter Programs, But Not the Way You Think 85 Extreme Decoupling 89 Required Ceremony Versus Programmer-Driven Clarity 92 Staying Out of Trouble 93
In the Wild 94 Wrapping Up 96
Chapter 9: Write Specs! 97
Test::Unit: When Your Documents Just Have to Work 98 A Plethora of Assertions 101 Don’t Test It, Spec It! 101 A Tidy Spec Is a Readable Spec 104
Easy Stubs 105 . . . And Easy Mocks 107 In the Wild 108 Staying Out of Trouble 110 Wrapping Up 113
PART II: Classes, Modules, and Blocks 115
Chapter 10: Construct Your Classes from Short, Focused Methods 117
Compressing Specifications 117 Composing Methods for Humans 121
xii Contents
Composing Ruby Methods 122 One Way Out? 123 Staying Out of Trouble 126 In the Wild 127
Wrapping Up 128
Chapter 11: Define Operators Respectfully 129
Defining Operators in Ruby 129 A Sampling of Operators 131 Operating Across Classes 134 Staying Out of Trouble 135
In the Wild 137 Wrapping Up 139
Chapter 12: Create Classes That Understand Equality 141
An Identifier for Your Documents 141 An Embarrassment of Equality 142 Double Equals for Everyday Use 143 Broadening the Appeal of the == Method 145 Well-Behaved Equality 146
Triple Equals for Case Statements 149 Hash Tables and the eql? Method 150 Building a Well-Behaved Hash Key 152 Staying Out of Trouble 153
In the Wild 154 Wrapping Up 156
Chapter 13: Get the Behavior You Need with Singleton and Class Methods 157
A Stubby Puzzle 158 A Hidden, but Real Class 160 Class Methods: Singletons in Plain Sight 162 In the Wild 164 Staying Out of Trouble 165 Wrapping Up 167
Contents xiii
Chapter 14: Use Class Instance Variables 169
A Quick Review of Class Variables 169 Wandering Variables 171 Getting Control of the Data in Your Class 174 Class Instance Variables and Subclasses 175 Adding Some Convenience to Your Class Instance Variables 176 In the Wild 177
Staying Out of Trouble 179 Wrapping Up 179
Chapter 15: Use Modules as Name Spaces 181
A Place for Your Stuff, with a Name 181 A Home for Those Utility Methods 184 Building Modules a Little at a Time 185 Treat Modules Like the Objects That They Are 186 Staying Out of Trouble 189
In the Wild 190 Wrapping Up 191
Chapter 16: Use Modules as Mixins 193
Better Books with Modules 193 Mixin Modules to the Rescue 195 Extending a Module 197 Staying Out of Trouble 198
In the Wild 202 Wrapping Up 205
Chapter 17: Use Blocks to Iterate
207
A Quick Review of Code Blocks One Word after Another 209 As Many Iterators as You Like 210 Iterating over the Ethereal 211 Enumerable: Your Iterator on Steroids 213 Staying Out of Trouble 215 In the Wild 217 Wrapping Up 218
207
xiv Contents
Chapter 18: Execute Around with a Block 219
Add a Little Logging 219 When It Absolutely Must Happen 224 Setting Up Objects with an Initialization Block 225 Dragging Your Scope along with the Block 225 Carrying the Answers Back 227 Staying Out of Trouble 228 In the Wild 229 Wrapping Up 231
Chapter 19: Save Blocks to Execute Later 233
Explicit Blocks 233 The Call Back Problem 234 Banking Blocks 236 Saving Code Blocks for Lazy Initialization 237 Instant Block Objects 239 Staying Out of Trouble 240 In the Wild 243 Wrapping Up 244
PART III: Metaprogramming 247
Chapter 20: Use Hooks to Keep Your Program Informed 249
Waking Up to a New Subclass 250
Modules Want To Be Heard Too Knowing When Your Time Is Up . . . And a Cast of Thousands 256 Staying Out of Trouble 257 In the Wild 259 Wrapping Up 261
253 255
Chapter 21: Use method_missing for Flexible Error Handling 263
Meeting Those Missing Methods 264 Handling Document Errors 266 Coping with Constants 267 In the Wild 268
Contents xv
Staying Out of Trouble 270 Wrapping Up 271
Chapter 22: Use method_missing for Delegation 273
The Promise and Pain of Delegation 274 The Trouble with Old-Fashioned Delegation 275 The method_missing Method to the Rescue 277 More Discriminating Delegation 278 Staying Out of Trouble 279 In the Wild 281 Wrapping Up 283
Chapter 23: Use method_missing to Build Flexible APIs 285
Building Form Letters One Word at a Time 286 Magic Methods from method_missing 287 It’s the Users That Count—All of Them 289 Staying Out of Trouble 289
In the Wild 290 Wrapping Up 292
Chapter 24: Update Existing Classes with Monkey Patching 293
Wide-Open Classes 294 Fixing a Broken Class 295 Improving Existing Classes 296 Renaming Methods with alias_method 297 Do Anything to Any Class, Anytime 299 In the Wild 299 Staying Out of Trouble 303 Wrapping Up 303
Chapter 25: Create Self-Modifying Classes 305
Open Classes, Again 305 Put Programming Logic in Your Classes 308 Class Methods That Change Their Class 309 In the Wild 310
xvi Contents
Staying Out of Trouble 314 Wrapping Up 315
Chapter 26: Create Classes That Modify Their Subclasses 317
A Document of Paragraphs 317 Subclassing Is (Sometimes) Hard to Do 319 Class Methods That Build Instance Methods 321 Better Method Creation with define_method 324 The Modification Sky Is the Limit 324 In the Wild 327 Staying Out of Trouble 330 Wrapping Up 332
PART IV: Pulling It All Together 333
Chapter 27: Invent Internal DSLs 335
Little Languages for Big Problems 335 Dealing with XML 336 Stepping Over the DSL Line 341 Pulling Out All the Stops 344
In the Wild 345 Staying Out of Trouble 347 Wrapping Up 349
Chapter 28: Build External DSLs for Flexible Syntax 351
The Trouble with the Ripper 352 Internal Is Not the Only DSL 353 Regular Expressions for Heavier Parsing 356 Treetop for Really Big Jobs 358 Staying Out of Trouble 360 In the Wild 362 Wrapping Up 364
Chapter 29: Package Your Programs as Gems 367
Consuming Gems 367 Gem Versions 368
Contents xvii
The Nuts and Bolts of Gems 369 Building a Gem 370 Uploading Your Gem to a Repository 374 Automating Gem Creation 375
In the Wild 376 Staying Out of Trouble 377 Wrapping Up 380
Chapter 30: Know Your Ruby Implementation 381
A Fistful of Rubies 381 MRI: An Enlightening Experience for the C Programmer 382 YARV: MRI with a Byte Code Turbocharger 385 JRuby: Bending the “J” in the JVM 387 Rubinius 388 In the Wild 389 Staying Out of Trouble 389 Wrapping Up 390
Chapter 31: Keep an Open Mind to Go with Those Open Classes 391 Appendix: Going Further 393
Index 397


微信扫一扫关注公众号

0 个评论

要评论图书请先登录注册

你也许想看:

高级C/C++编译技术

《高级C/C++编译技术》

Milan Stevanovic.机械工业出版社.2015-4

“米兰·斯特瓦诺维奇编著的这本《高级C\C 编译技术》从多个角度全面、系统地讲解多任务操作系统中编译、链接、装载与库的内幕...”

Engineering Software as a Service

《Engineering Software as a Service》

Armando Fox,David Patterson.Strawberry Canyon LLC.2013-4-16

“”

爱上Python

《爱上Python》

[新加坡] Jamie Chan.人民邮电出版社.2016-6

“本书将复杂的编程概念分解成简单的步骤,简单易懂。作者通过多年的教学经验精心挑选出了有特点的例子,手把手地实例教学。这本书...”

Swifter : 100 个 Swift 开发必备 Tip

《Swifter : 100 个 Swift 开发必备 Tip》

王巍 著.电子工业出版社.

“作者赴美参加了Apple 的WWDC 14,亲眼见证了Swift 的发布,并从这门语言正式诞生的第一分钟就开始学习和钻研...”

Eloquent Ruby

《Eloquent Ruby》

Russ Olsen.Addison-Wesley.2011-2

“It's easy to write correct Ruby code, but to gain the fluenc...”

Windows高级调试

《Windows高级调试》

Mario Hewardt,Daniel Pravat.机械工业出版社.2009-5

“本书主要讲解Windows高级调试思想和工具,并涉及一些高级调试主题。本书内容主要包括:工具简介、调试器简介、调试器揭密...”

Cocoa入门

《Cocoa入门》

James Duncan Davidson,Apple Inc..O'Reilly.2008-2

“本书助您轻松体验Cocoa开发,不仅是阅读,还有动手实践。介绍完Xcode和Interface Builder之后,您将...”

Effective Python

《Effective Python》

Brett Slatkin.Addison-Wesley Professional.2015-3-8

“”

Making Isometric Social Real-Time Games with HTML5, CSS3, and Javascript

《Making Isometric Social Real-Time Games with HTML5, CSS3, and Javascript》

Mario Andres Pagella.O'Reilly Media.2011-9-9

“Walk through the process of designing and implementing from ...”

Android NDK Beginner's Guide

《Android NDK Beginner's Guide》

Sylvain Ratabouil.Packt Publishing.2012-1-26

“Android NDK is all about injecting high performance into you...”

软件工程的事实与谬误

《软件工程的事实与谬误》

[美] Robert L. Glass.中国电力出版社.2006-1

“关于构建软件,我们理应知道许多东西,但是实际上却因为这样或那样的原因不知道,甚至我们想当然的一些看法实际上是显而易见的错...”

Web Application Development with Yii 2 and PHP

《Web Application Development with Yii 2 and PHP》

Mark Safronov,Jeffrey Winesett..2014-9-25

“This book is for professional PHP developers who wish to mas...”

深入理解LINUX网络内幕

《深入理解LINUX网络内幕》

Christian Benvenuti.东南大学出版社.2006-5

“本书系统地阐述了网络的基本概念,并指导你如何用C语言实现。同时描述了Linux网络的全貌,解释了Linux代码是如何工作...”

Building Web Apps for Google TV

《Building Web Apps for Google TV》

Ferrate, Andres; Surya, Amanda; Lee, Daniels..2011-7

“By integrating the Web with traditional TV, Google TV offers...”

Big Data

《Big Data》

Nathan Marz,James Warren.Manning Publications.2015-5-10

“Services like social networks, web analytics, and intelligen...”

iOS开发进阶

《iOS开发进阶》

唐巧.电子工业出版社.2015-1-1

“《iOS开发进阶》分工具、实践、理论三大部分。第一部分介绍iOS 开发的常用工具,第二部分介绍iOS开发中的一些常见的实...”

编程人生(下卷)

《编程人生(下卷)》

[美] Peter Seibel.人民邮电出版社.2014-12

“这是一本访谈笔录,记录了当今最具个人魅力的15 位软件先驱的编程生涯。包括Donald Knuth、Jamie Zawi...”

Growth Hack 這樣做

《Growth Hack 這樣做》

Xdite.PCuSER電腦人文化.2016-5-7

“◎具體教你在預算有限的情況之下,把成長做出來的可行與必要方法! ◎帶動台灣成長駭客話題的專業講師,親授讓產品突破80分的...”

精通shell编程

《精通shell编程》

韦拉拉格温(Veeraraghavan Sriranga).人民邮电出版社.2003-2

“本书由浅入深地介绍了shell编程技术。为了满足不同读者的需要,本书内容分为三个部分:UNIX和shell工具介绍、sh...”

Python Pocket Reference

《Python Pocket Reference》

Mark Lutz.O'Reilly Media.2009-10-15

“This fourth edition of "Python Pocket Reference" has been th...”