本书是作者Peter J. Jones近十年Ruby开发经验的结晶。他利用48个Ruby实战案例,揭示了Ruby鲜有人知的特点、难点和习惯用法。每种实践案例都包含了具体的、实用的、组织清晰的指导方针,细致的建议,详细的专业理由,并通过示例代码阐明。本书为Ruby开发的每个主要领域都提供了切实可行的建议,从模块到内存,再到元编程。旨在通过全面地介绍Ruby编程技术,帮助Ruby程序员及爱好者写出更健壮、更高效、更易维护的和运行的代码。适合Ruby程序员及爱好者阅读。
關於作者:
Peter J. Jones是一个自由软件开发者,还是Devalot.com编程研讨组的高级导师。他从2005年起就开始使用Ruby编程,为几届编程研讨组写过教案并教过学,包括为Ruby初学者准备的11周的课程。
目錄:
序言
前言
致谢
关于作者
Chapter 1: Accustoming Yourself to Ruby
Item 1: Understand What Ruby Considers to Be True
Item 2: Treat All Objects as If They Could Be nil
Item 3: Avoid Ruby''s Cryptic Perlisms
Item 4: Be Aware That Constants Are Mutable
Item 5: Pay Attention to Run—Time Warnings
Chapter 2: Classes, Objects, and Modules
Item 6: Know How Ruby Builds Inheritance Hierarchies
Item 7: Be Aware of the Different Behaviors of super
Item 8: Invoke super When Initializing Subclasses
Item 9: Be Alert for Ruby''s Most Vexing Parse
Item 10: Prefer Struct to Hash for Structured Data
Item 11: Create Namespaces by Nesting Code in Modules
Item 12: Understand the Different Flavors of Equality
Item 13: Implement Comparison via“<=>” and the Comparable Module
Item 14: Share Private State through Protected Methods
Item 15: Prefer Class Instance Variables to Class Variables
Chapter 3: Collections
Item 16: Duplicate Collections Passed as Arguments before Mutating Them
Item 17: Use the Array Method to Convert nil and Scalar Objects into Arrays
Item 18: Consider Set for Efficient Element Inclusion Checking
Item 19: Know How to Fold Collections with reduce
Item 20: Consider Using a Default Hash Value
Item 21: Prefer Delegation to Inheriting from Collection Classes
Chapter 4: Exceptions
Item 22: Prefer Custom Exceptions to Raising Strings
Item 23: Rescue the Most Specific Exception Possible
Item 24: Manage Resources with Blocks and ensure
Item 25: Exit ensure Clauses by Flowing Off the End
Item 26: Bound retry Attempts, Vary Their Frequency, and Keep an Audit Trail
Item 27: Prefer throw to raise for Jumping Out of Scope
Chapter 5: Metaprogramming
Item 28: Familiarize Yourselfwith Module and Class Hooks
Item 29: Invoke super from within Class Hooks
Item 30: Prefer define_method to method_missing
Item 31: Know the Difference between the Variants of eval
Item 32: Consider Alternatives to Monkey Patching
Item 33: Invoke Modified Methods with Alias Chaining
Item 34: Consider Supporting Differences in Proc Arity
Item 35: Think Carefully Before Using Module Prepending
Chapter 6: Testing
Item 36: Familiarize Yourselfwith Mini Test Unit Testing
Item 37: Familiarize Yourselfwith Mini Test Spec Testing
Item 38: Simulate Determinism with Mock Objects
Item 39: Strive for Effectively Tested Code
Chapter 7: Tools and Libraries
Item 40: Know How to Work with Ruby Documentation
Item 41: Be Aware of IRB''s Advanced Features
Item 42: Manage Gem Dependencies with Bundler
Item 43: Specify an Upper Bound for Gem Dependencies
Chapter 8: Memory Management and
Performance
Item 44: Familiarize Yourselfwith Ruby''s Garbage Collector
Item 45: Create Resource Safety Nets with Finalizers
Item 46: Be Aware of Ruby Profiling Tools
Item 47: Avoid Object Literals in Loops
Item 48: Consider Memoizing Expensive Computations
Epilogue
Index