๐”– Scriptorium
โœฆ   LIBER   โœฆ

๐Ÿ“

Practical object-oriented design: an Agile primer using Ruby

โœ Scribed by Metz, Sandi


Publisher
Addison-Wesley
Year
2019
Tongue
English
Edition
Second edition
Category
Library

โฌ‡  Acquire This Volume

No coin nor oath required. For personal study only.

โœฆ Synopsis


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...

โœฆ 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


๐Ÿ“œ SIMILAR VOLUMES


Practical Object-Oriented Design: An Agi
โœ Sandi Metz ๐Ÿ“‚ Library ๐Ÿ“… 2018 ๐Ÿ› Addison-Wesley Professional ๐ŸŒ English

Ruby's widely admired simplicity 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 po

Practical object-oriented design: an agi
โœ Metz, Sandi ๐Ÿ“‚ Library ๐Ÿ“… 2019 ๐Ÿ› Pearson Education;Addison-Wesley ๐ŸŒ English

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-Ori

Practical object-oriented design: an agi
โœ Metz, Sandi ๐Ÿ“‚ Library ๐Ÿ“… 2019 ๐Ÿ› Addison-Wesley ๐ŸŒ English

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-Ori

Practical Object-Oriented Design: An Agi
โœ Sandi Metz [Sandi Metz] ๐Ÿ“‚ Library ๐Ÿ“… 2018 ๐Ÿ› Addison-Wesley Professional ๐ŸŒ English

<span><p>The Complete Guide to Writing Maintainable, Manageable, Pleasing, and Powerful Object-Oriented Applications</p><p>Object-oriented programming languages have a point of view about how best to model the world. They exist to help you create beautiful, straightforward applications that are easy

Practical Object-Oriented Design in Ruby
โœ Sandi Metz ๐Ÿ“‚ Library ๐Ÿ“… 2012 ๐Ÿ› Addison-Wesley Professional ๐ŸŒ English

<b>The Complete Guide to Writing More Maintainable, Manageable, Pleasing, and Powerful Ruby Applications</b> <p style="margin:0px;">ย </p> <p style="margin:0px;">Rubyโ€™s widely admired ease of use has a downside: Too many Ruby and Rails applications have been created without concern for their long-ter

Practical Object-Oriented Design in Ruby
โœ Sandi Metz ๐Ÿ“‚ Library ๐Ÿ“… 2012 ๐Ÿ› Addison-Wesley Professional ๐ŸŒ English

<b>The Complete Guide to Writing More Maintainable, Manageable, Pleasing, and Powerful Ruby Applications</b> <p style="margin:0px;">ย </p> <p style="margin:0px;">Rubyโ€™s widely admired ease of use has a downside: Too many Ruby and Rails applications have been created without concern for their long-ter