Cart
Free Shipping in the UK
Proud to be B-Corp

Practical Object-Oriented Design Sandi Metz

Practical Object-Oriented Design By Sandi Metz

Practical Object-Oriented Design by Sandi Metz


£29.49
Condition - New
Only 4 left

Practical Object-Oriented Design Summary

Practical Object-Oriented Design: An Agile Primer Using Ruby by Sandi Metz

The Complete Guide to Writing Maintainable, Manageable, Pleasing, and Powerful Object-Oriented Applications

Object-oriented programming languages exist to help you create beautiful, straightforward applications that are easy to change and simple to extend. Unfortunately, the world is awash with object-oriented (OO) applications that are difficult to understand and expensive to change. Practical Object-Oriented Design, Second Edition, immerses you in an OO mindset and teaches you powerful, real-world, object-oriented design techniques with simple and practical examples.

Sandi Metz demonstrates 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 in the easy-to-understand Ruby programming language, all downloadable from the companion website, poodr.com. Fully updated for Ruby 2.5, this guide shows how to

  • Decide what belongs in a single 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

Whatever your previous object-oriented experience, this concise guide will help you achieve the superior outcomes you're looking for.

Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

Practical Object-Oriented Design Reviews

Praise for the first edition of Practical Object-Oriented Design in Ruby


Meticulously pragmatic and exquisitely articulate, Practical Object Oriented Design in Ruby makes otherwise elusive knowledge available to an audience which desperately needs it. The prescriptions are appropriate both as rules for novices and as guidelines for experienced professionals.

-Katrina Owen, Creator, Exercism

I do believe this will be the most important Ruby book of 2012. Not only is the book 100% on-point, Sandi has an easy writing style with lots of great analogies that drive every point home.

-Avdi Grimm, author of Exceptional Ruby and Objects on Rails

While Ruby is an object-oriented language, little time is spent in the documentation on what OO truly means or how it should direct the way we build programs. Here Metz brings it to the fore, covering most of the key principles of OO development and design in an engaging, easy-to-understand manner. This is a must for any respectable Ruby bookshelf.

-Peter Cooper, editor, Ruby Weekly

So good, I couldn't put it down! This is a must-read for anyone wanting to do object-oriented programming in any language, not to mention it has completely changed the way I approach testing.

-Charles Max Wood, Ruby Rogues Podcast co-host and CEO of Devchat.tv

Distilling scary OO design practices with clear-cut examples and explanations makes this a book for novices and experts alike. It is well worth the study by anyone interested in OO design being done right and 'light.' I thoroughly enjoyed this book.

-Manuel Pais, DevOps and Continuous Delivery Consultant, Independent

If you call yourself a Ruby programmer, you should read this book. It's jam-packed with great nuggets of practical advice and coding techniques that you can start applying immediately in your projects.

-Ylan Segal, San Diego Ruby User Group

This is the best OO book I've ever read. It's short, sweet, but potent. It slowly moves from simple techniques to more advanced, each example improving on the last. The ideas it presents are useful not just in Ruby but in static languages like C# too. Highly recommended!

-Kevin Berridge, software engineering manager, Pointe Blank Solutions, and organizer, Burning River Developers Meetup

This is the best programming book I've read in ages. Sandi talks about basic principles, but these are things we're probably still doing wrong and she shows us why and how. The book has the perfect mix of code, diagrams, and words. I can't recommend it enough and if you're serious about being a better programmer, you'll read it and agree.

-Derick Hitchcock, software engineer, Cisco

Metz's take on the subject is rooted strongly in theory, but the explanation always stays grounded in real world concerns, which helped me to internalize it. The book is clear and concise, yet achieves a tone that is more friendly than terse.

-Alex Strasheim, network administrator, Ensemble Travel Group

Whether you're just getting started in your software development career, or you've been coding for years (like I have), it's likely that you'll learn a lot from Ms. Metz's book. She does a fantastic job of explaining the whys of well-designed software along with the hows.

-Gabe Hollombe, software craftsman, avantbard.com

About Sandi Metz

Sandi Metz is a programmer, teacher, author, and sometime consultant. In the past 30+ years she has written innumerable applications and creates practical solutions that produce working software that is easy to change. She has spoken about object-oriented design and refactoring at international Ruby conferences since 2009.

Table of Contents

Introduction xv

Acknowledgments xix

About the Author xxi

Chapter 1: Object-Oriented Design 1

1.1 In Praise of Design 2

1.2 The Tools of Design 4

1.3 The Act of Design 6

1.4 A Brief Introduction to Object-Oriented Programming 10

1.5 Summary 13

Chapter 2: Designing Classes with a Single Responsibility 15

2.1 Deciding What Belongs in a Class 16

2.2 Creating Classes That Have a Single Responsibility 17

2.3 Writing Code That Embraces Change 24

2.4 Finally, the Real Wheel 33

2.5 Summary 35

Chapter 3: Managing Dependencies 37

3.1 Understanding Dependencies 38

3.2 Writing Loosely Coupled Code 41

3.3 Managing Dependency Direction 53

3.4 Summary 59

Chapter 4: Creating Flexible Interfaces 61

4.1 Understanding Interfaces 61

4.2 Defining Interfaces 63

4.3 Finding the Public Interface 65

4.4 Writing Code That Puts Its Best (Inter)Face Forward 77

4.5 The Law of Demeter 80

4.6 Summary 84

Chapter 5: Reducing Costs with Duck Typing 85

5.1 Understanding Duck Typing 85

5.2 Writing Code That Relies on Ducks 95

5.3 Conquering a Fear of Duck Typing 100

5.4 Summary 103

Chapter 6: Acquiring Behavior through Inheritance 105

6.1 Understanding Classical Inheritance 105

6.2 Recognizing Where to Use Inheritance 106

6.3 Misapplying Inheritance 114

6.4 Finding the Abstraction 116

6.5 Managing Coupling between Superclasses and Subclasses 129

6.6 Summary 139

Chapter 7: Sharing Role Behavior with Modules 141

7.1 Understanding Roles 142

7.2 Writing Inheritable Code 158

7.3 Summary 161

Chapter 8: Combining Objects with Composition 163

8.1 Composing a Bicycle of Parts 163

8.2 Composing the Parts Object 168

8.3 Manufacturing Parts 176

8.4 The Composed Bicycle 181

8.5 Deciding between Inheritance and Composition 185

8.6 Summary 191

Chapter 9: Designing Cost-Effective Tests 193

9.1 Intentional Testing 194

9.2 Testing Incoming Messages 202

9.3 Testing Private Methods 215

9.4 Testing Outgoing Messages 217

9.5 Testing Duck Types 221

9.6 Testing Inherited Code 233

9.7 Summary 244

Afterword 245

Index 247

Additional information

NGR9780134456478
9780134456478
0134456475
Practical Object-Oriented Design: An Agile Primer Using Ruby by Sandi Metz
New
Paperback
Pearson Education (US)
2018-11-21
288
N/A
Book picture is for illustrative purposes only, actual binding, cover or edition may vary.
This is a new book - be the first to read this copy. With untouched pages and a perfect binding, your brand new copy is ready to be opened for the first time

Customer Reviews - Practical Object-Oriented Design