Buy new:
-65% $15.64
FREE delivery Monday, May 20 on orders shipped by Amazon over $35
Ships from: Amazon
Sold by: numberonestore
$15.64 with 65 percent savings
List Price: $44.99

The List Price is the suggested retail price of a new product as provided by a manufacturer, supplier, or seller. Except for books, Amazon will display a List Price if the product was purchased by customers on Amazon or offered by other retailers at or above the List Price in at least the past 90 days. List prices may not necessarily reflect the product's prevailing market price.
Learn more
Get Fast, Free Shipping with Amazon Prime FREE Returns
FREE delivery Monday, May 20 on orders shipped by Amazon over $35
Only 1 left in stock - order soon.
$$15.64 () Includes selected options. Includes initial monthly payment and selected options. Details
Price
Subtotal
$$15.64
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
Ships from
Amazon
Ships from
Amazon
Sold by
Sold by
Returns
30-day easy returns
30-day easy returns
This item can be returned in its original condition for a full refund or replacement within 30 days of receipt.
Returns
30-day easy returns
This item can be returned in its original condition for a full refund or replacement within 30 days of receipt.
Payment
Secure transaction
Your transaction is secure
We work hard to protect your security and privacy. Our payment security system encrypts your information during transmission. We don’t share your credit card details with third-party sellers, and we don’t sell your information to others. Learn more
Payment
Secure transaction
We work hard to protect your security and privacy. Our payment security system encrypts your information during transmission. We don’t share your credit card details with third-party sellers, and we don’t sell your information to others. Learn more
$11.73
Get Fast, Free Shipping with Amazon Prime FREE Returns
FREE delivery Friday, May 17 on orders shipped by Amazon over $35. Order within 13 hrs 44 mins
Only 1 left in stock - order soon.
$$15.64 () Includes selected options. Includes initial monthly payment and selected options. Details
Price
Subtotal
$$15.64
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
Access codes and supplements are not guaranteed with used items.
Kindle app logo image

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.

Read instantly on your browser with Kindle for Web.

Using your mobile phone camera - scan the code below and download the Kindle app.

QR code to download the Kindle App

Something went wrong. Please try your request again later.

Practical Object-Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby) First Edition

4.7 4.7 out of 5 stars 515 ratings

There is a newer edition of this item:

{"desktop_buybox_group_1":[{"displayPrice":"$15.64","priceAmount":15.64,"currencySymbol":"$","integerValue":"15","decimalSeparator":".","fractionalValue":"64","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"ZWQL7qhFKoZtBxz41hM6w5WpUiDqg1rz7%2Bpe1xJk%2BL8NYOb1zDV9bGCQkDZB9C5HoMTRFTnBjnBvNozmwNmr3vQeS%2FTJeijqfj5vhsN1oLAa9TAlcHGcOcEGRkitz9%2BC8nl09K8XY44oqsngnmIHSjTMqMJ%2BtYdxF68jtgm6tsplaqxg9sD%2BPdfOw9rGwrIv","locale":"en-US","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}, {"displayPrice":"$11.73","priceAmount":11.73,"currencySymbol":"$","integerValue":"11","decimalSeparator":".","fractionalValue":"73","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"ZWQL7qhFKoZtBxz41hM6w5WpUiDqg1rzPJLHKOqO2jSAZyi3xOoboi0KwRsHvwdCSdtCKas6wF4OOif3hHRXQiyIlM10ggQkn%2BrfKjdaOldxkcngmrz%2BurrEYqP8JTGSEG263wStC%2FMy4issWQSgu6XfciTi%2FytxDF1%2B2snrHNFAoyKe%2BocYxXlwoYEO3FYI","locale":"en-US","buyingOptionType":"USED","aapiBuyingOptionIndex":1}]}

Purchase options and add-ons

The Complete Guide to Writing More Maintainable, Manageable, Pleasing, and Powerful Ruby Applications

 

Ruby’s widely admired ease of use has a downside: Too many Ruby and Rails applications have been created without concern for their long-term maintenance or evolution. The Web is awash in Ruby code that is now virtually impossible to change or extend. This text helps you solve that problem by using powerful real-world object-oriented design techniques, which it thoroughly explains using simple and practical Ruby examples.

 

Sandi Metz has distilled a lifetime of conversations and presentations about object-oriented design into a set of Ruby-focused practices for crafting manageable, extensible, and pleasing code. She shows you how to build new applications that can survive success and repair existing applications that have become impossible to change. Each technique is illustrated with extended examples, all downloadable from the companion Web site, poodr.info.

 

The first title to focus squarely on object-oriented Ruby application design, Practical Object-Oriented Design in Ruby will guide you to superior outcomes, whatever your previous Ruby experience. Novice Ruby programmers will find specific rules to live by; intermediate Ruby programmers will find valuable principles they can flexibly interpret and apply; and advanced Ruby programmers will find a common language they can use to lead development and guide their colleagues.

 

This guide will help you

  • Understand how object-oriented programming can help you craft Ruby code that is easier to maintain and upgrade
  • Decide what belongs in a single Ruby class
  • Avoid entangling objects that should be kept separate
  • Define flexible interfaces among objects
  • Reduce programming overhead costs with duck typing
  • Successfully apply inheritance
  • Build objects via composition
  • Design cost-effective tests
  • Solve common problems associated with poorly designed Ruby code

 

Read more Read less

Amazon First Reads | Editors' picks at exclusive prices

Frequently bought together

$15.64
Get it as soon as Monday, May 20
Only 1 left in stock - order soon.
Sold by numberonestore and ships from Amazon Fulfillment.
+
$41.11
Get it as soon as Monday, May 20
Only 1 left in stock - order soon.
Sold by STARTREKBOOKS and ships from Amazon Fulfillment.
+
$40.28
Get it May 16 - 20
Only 1 left in stock - order soon.
Ships from and sold by 365giftshop.
Total price:
To see our price, add these items to your cart.
Details
Added to Cart
These items are shipped from and sold by different sellers.
Choose items to buy together.

Editorial Reviews

About the Author

Sandi Metz has thirty years of experience working on projects that survived to grow and change. She now writes code every day as a software architect at Duke University, where her team solves real problems for customers who have large object-oriented applications that have been evolving for more than fifteen years. She has spoken at Ruby Nation and speaks regularly at the Gotham Ruby Users Conference.

Product details

  • Publisher ‏ : ‎ Addison-Wesley Professional; First Edition (January 1, 2013)
  • Language ‏ : ‎ English
  • Paperback ‏ : ‎ 247 pages
  • ISBN-10 ‏ : ‎ 0321721330
  • ISBN-13 ‏ : ‎ 978-0321721334
  • Item Weight ‏ : ‎ 1.2 pounds
  • Dimensions ‏ : ‎ 7 x 0.8 x 9 inches
  • Customer Reviews:
    4.7 4.7 out of 5 stars 515 ratings

About the author

Follow authors to get new release updates, plus improved recommendations.
Sandi Metz
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

I am a programmer. In the past 30+ years I have written innumerable applications, many of which are still running today. Dealing with long lived applications has left me deeply biased towards practical solutions that produce working software that is easy to change.

I am also someone who explains things, but I have difficulty speaking without drawing on the whiteboard and feel inarticulate unless the conversation includes at least three colors.

I believe in simplicity; simple code, and straightforward explanations, and strive for it in my code and in my writing.

Customer reviews

4.7 out of 5 stars
4.7 out of 5
515 global ratings

Top reviews from the United States

Reviewed in the United States on November 9, 2012
In short, this is in my top five programming books I've ever read. Please do not hesitate, do everyone that works with your code (especially yourself) a favor and read it.

I believe that in 20 years, this will be considered one of the definitive works on Object-Oriented Programming. The author provides a smooth on-ramp from basic OO programming principles, and builds on it until you're able to understand the kinds of lessons that normally only come from decades of day-in, day-out experience working in OO code.

What's unusual about this book?

- It reads your mind.
The author takes enormous care to empathize with the reader. Many times, you'll find yourself reading and thinking something, only to read "you're probably thinking at this point..." with your exact thought or concern.

- The author is okay with sounding like a human being.
The author's colloquial style peeks through over and over again. I kept getting caught off guard by delightful little turns of phrase that one does not see often in programming books.

- The lessons are grounded in reality.
Since Ms. Metz keeps the examples surprisingly close to production code (though a somewhat simplified version), you don't have to reach very far to figure out how you'd apply these lessons. Examples aren't contrived to prove a point, they are real-life situations that demand a solution, which always seems to be presented at just the right time. While reading, you'll find yourself exclaiming when she pinpoints the exact source of pain that you run into frequently.

- Sections end, rather than begin, with a principle.
This is the first book about Object-Oriented design I've read that doesn't clobber you over the head with jargon or come in with a top-down approach. Most technical books start with an assertion, pattern, or hypothesis, then spend the rest of the book explaining and trying to convince you. Ms. Metz takes the longer, more difficult approach of organically working through a typical Object-Oriented application, growing it, feeling pain, and addressing that pain. Along the way, she points out where these pain points are addressed, and only then does she explain that there is a name for the solution,

- It is immediately beneficial.
For my part, I couldn't wait to go back and apply all the lessons I learned to code that I'd written that I wasn't happy with and couldn't figure out why. I've used the lessons from this book to help guide my intuition about the kind of code that lends itself to long-term maintainability.

- It contains no religious zealotry.
There's no preachiness: it's all about strategies, tactics, and tradeoffs a software developer employs to reach a desired goal. It also has the most concise and articulate overview of testing styles I've ever seen. Many programming books lose the forest for the trees, focusing on a pattern, principle, tool, or technique, touting it as *the* solution to all your programming problems. Ms. Metz never falls into that trap, and keeps the focus on writing code that can meet the changing needs of users for years to come.

- It is timeless.
Rather than a trendy new topic, this book could find itself applicable 25 years ago or 25 years from now. I believe it'll be regarded as a landmark volume on the topic of OO design, along with books like Kent Beck's Smalltalk Best Practice Patterns. It's obvious that lots of care, attention, and refinement went into this book, and the reader benefits greatly. I'm grateful to Sandy for writing this book, I plan to re-read it at least once a year to keep my OO skills from falling into atrophy.

I wish I could provide some negative feedback to balance the review, but I simply don't have any. If you're a relatively new, intermediate, or even somewhat advanced OO developer in any langauge, purchasing this book is the best way I know to level up your Object-Oriented design skills.
20 people found this helpful
Report
Reviewed in the United States on September 11, 2012
This is my favorite tech read so far this year. It takes a straight-forward approach to writing code that you won't hate yourself for a day or month or year later.

The term "design" in the title is not referring to making wild speculative guesses about the future and planning for any number of contingencies, it is about arranging the code so that it is understandable, and to minimize cost and pain.

There is a focus on designing the communication between objects as much as focusing on the structure of the objects themselves, which I found to be extremely interesting. This discussion helped clarify a lot of thoughts and ideas about abstractions and where responsibilities belong, as well as the directions of dependencies -- things that had been rattling around in my brain for a while but that I had trouble applying in the real world. Reading this let me put all these pieces together (and then some) into a coherent whole. Or at least a coherent seed of a whole.

The code examples are simple, but the author manages to wrangle some serious dramatic tension out of every line of code, and they illustrate the concepts covered well enough that I was able to make the leap to applying the concepts in much more complex code bases.

The chapter on testing was sublime. It took an immensely practical approach to which methods to test and which tests to write in order to avoid duplication and brittleness in both tests and designs.

I also appreciated that none of the discussions were about any sort of moral superiority. The discussions were about getting things done. The argument for arranging code nicely wasn't about aesthetics or professional duty, but rather about lowering cost and allowing you to make changes without causing expensive outages and making people frustrated.

Soap boxes? Sure. High horses? Nowhere in sight.

Note: I read a pre-release version of the book. I did not know the author at the time, but sent her quite a lot of feedback, which led to several conversations to clarify. When I waxed enthusiastic about the contents, she asked if she could forward this to the publisher, and a quote ended up in the paper copy.
52 people found this helpful
Report

Top reviews from other countries

Translate all reviews to English
Arivarasan
5.0 out of 5 stars Best book I ever read on programming language.
Reviewed in India on December 25, 2020
Best book to learn Ruby programming language with practical examples
Ali A
5.0 out of 5 stars Concise and up to the point
Reviewed in Australia on November 28, 2016
While this book uses ruby as its syntax, principles are applicable to other languages as well. Full of points to cover design knowledge gaps.
hazardco
5.0 out of 5 stars El mejor libro sobre orientación a objetos
Reviewed in Spain on May 19, 2016
Es difícil hacer una reseña sobre un libro. Es, sin duda, el mejor libro sobre orientación a objetos que he leído nunca. Independientemente del lenguaje que utiliza, en este caso el libro está orientado a Ruby, va exponiendo poco a poco todas las malas prácticas que realizamos y dando soluciones a cada una de ellas.
Introduce buenas prácticas en el desarrollo de aplicaciones y en el diseño de aplicaciones orientadas a objetos poniendo de manifiesto técnicas o metodologías como SOLID, DRY, YAGNI, testing, etc.
Un libro altamente recomendado para programadores que quieran crear aplicaciones con un diseño excelente. Si además eres programador de Ruby, podrás exprimir al máximo el lenguaje.
¡Muy, muy recomendable!
Diego Oliveira
5.0 out of 5 stars Amazing!
Reviewed in Brazil on July 19, 2014
Explains in a very didactic way many topics essential for build a software really OO. The last one, about testing is the best I've ever read! :D
3 people found this helpful
Report
Jay
5.0 out of 5 stars A Great Refresher on Object-Oriented Development
Reviewed in Canada on April 9, 2014
I'd consider myself an intermediate developer with a few years of experience under my belt in a few different languages, though relatively new to Ruby. We learned about object-oriented design in University, but perhaps not how to use it best in practical applications. A few years of experience has also given me a different perspective on developing and maintaining large applications.

With that background, I found this book a joy to read. Besides providing a great refresher of OO design principles using Ruby syntax, the author provides many tidbits from her experience of developing and maintaining systems over time that are as valuable as the OO principles themselves. Both her writing style, and the interesting analogies and coding examples are such that it's easy to breeze through a few chapters of this book without getting bored. As an early ruby developer, it was exactly what I needed to understand ruby's OO mechanisms while also having a great development refresher. Highly recommended!