Avdi Grimm《Confident Ruby》

Avdi Grimm《Confident Ruby》

作者:Avdi Grimm

出版年:2013-10-22

评分:7.7

ISBN:9787564229993

所属分类:网络科技

书刊介绍

内容简介

For many programmers, discovering Ruby is a revelation. They are overjoyed by how elegantly and succinctly they can state problems in the language. But then the real world creeps in, and that joy gradually wanes as the code becomes cluttered with distracting edge case scenarios, error handling, and checks for nil.

Confident Ruby is a guide to recapturing the joy of writing Ruby by employing small patterns and stylistic choices to make each method tell a coherent story. Over the course of 32 patterns, you’ll learn how to isolate uncertainty at the borders of your code; how to avoid repetitive conditionals; and how to liberate your code from the chore of nil-checking. You’ll discover the four parts of a method, and how to use those parts to construct a narrative. Following along with real-world refactoring sessions, you’ll learn how to apply these lessons to legacy code.

Whether you are a novice or an experienced Ruby hacker, this book will help you become a more confident and joyful programmer.

作品目录

Introduction

- Ruby meets the real world

- Confident code

- A good story, poorly told

- Code as narrative

- The four parts of a method

- 3.times { rejoice! }

- Collecting Input

Sending a strong message

- Conditionally call conversion methods

- Define your own conversion protocols

- Define conversions to user-defined types

- Use built-in conversion functions

- Use the Array() conversion function to array-ify inputs

- Define conversion functions

- Replace “string typing” with classes

- Wrap collaborators in Adapters

- Use transparent adapters to gradually introduce abstraction

- Reject unworkable values with preconditions

- Use #fetch to assert the presence of Hash keys

- Document assumptions with assertions

- Handle special cases with a Guard Clause

- Represent special cases as objects

- Represent do-nothing cases as null objects

- Substitute a benign value for =nil=

- Use #fetch for defaults

- Use symbols as placeholder objects

- Bundle arguments into parameter objects

- Yield a parameter builder object

- Receive policies instead of data

Delivering Output

- Write total functions

- Call back instead of returning

- Represent failure with a benign value

- Represent failure with a special case object

- Return a status object

- Yield a status object

- Signal early termination with =throw=

Handling Failure

- Prefer top-level rescue clause

- Use checked methods for risky operations

- Use bouncer methods

Refactoring for Confidence

- MetricFu

- Stringer

- Parting Words

相关推荐

微信二维码