• Complain

Sandi Metz [Sandi Metz] - Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e

Here you can read online Sandi Metz [Sandi Metz] - Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e full text of the book (entire story) in english for free. Download pdf and epub, get meaning, cover and reviews about this ebook. year: 2018, publisher: Addison-Wesley Professional, genre: Computer. Description of the work, (preface) as well as reviews are available. Best literature library LitArk.com created for fans of good reading and offers a wide selection of genres:

Romance novel Science fiction Adventure Detective Science History Home and family Prose Art Politics Computer Non-fiction Religion Business Children Humor

Choose a favorite category and find really read worthwhile books. Enjoy immersion in the world of imagination, feel the emotions of the characters or learn something new for yourself, make an fascinating discovery.

Sandi Metz [Sandi Metz] Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e
  • Book:
    Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e
  • Author:
  • Publisher:
    Addison-Wesley Professional
  • Genre:
  • Year:
    2018
  • Rating:
    3 / 5
  • Favourites:
    Add to favourites
  • Your mark:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e: summary, description and annotation

We offer to read an annotation, description, summary or preface (depends on what the author of the book "Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e" wrote himself). If you haven't found the necessary information about the book — write in the comments, we will try to find it.

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

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 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. Even though theyre written in OO languages, these applications fail to achieve the promise of OO because their code doesnt reflect the right mindset. The purpose of Practical Object-Oriented Design, Second Edition, is to solve that problem by immersing you in an OO mindset. It teaches powerful, real-world, object-oriented design techniques using simple and practical examples. It will change the way you think about code.

Sandi Metz has distilled a lifetime of conversations and presentations about object-oriented design into a proven set of OO practices for crafting manageable, extensible, and pleasing code. She demonstrates how to build new applications that can survive success and how to repair those 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
  • Design cost-effective tests
  • Solve common problems associated with poorly designed object-oriented code

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

Sandi Metz [Sandi Metz]: author's other books


Who wrote Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e? Find out the surname, the name of the author of the book and a list of all author's works by series.

Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e — read online for free the complete book (whole text) full work

Below is the text of the book, divided by pages. System saving the place of the last page read, allows you to conveniently read the book "Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e" online for free, without having to search again every time where you left off. Put a bookmark, and you can go to the page where you finished reading at any time.

Light

Font size:

Reset

Interval:

Bookmark:

Make
  • Safari Home Icon Safari Home
  • recommendations icon Recommended
  • icon_Playlist_smlCreated with Sketch. Playlists
  • search icon Search
  • navigation arrow Expand Nav
    • recent items icon History
    • topics icon Topics
    • MaskCreated with Sketch. Learning Paths
    • offers icon Offers & Deals
      • Newsletters
    • highlights icon Highlights
    • settings icon Settings
    • Support
    • settings icon Settings days left in your trial..
    • Support
Table of Contents for Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e
  • Twitter
  • Facebook
  • Google Plus
Next Next Chapter
About This E-Book
Next Next Chapter
About This E-Book

Find answers on the fly, or master something new. Subscribe today.

Back to top
  • Support
  • Get the App
2019 window.NREUM||(NREUM={});NREUM.info={"transactionName":"YgdaZ0NSW0cEB0RdWltNfkZfUEFdCgofXFBHDVYdR1pQQxZeRl1QQj1aWkU=","agent":"","beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","applicationTime":127,"queueTime":622,"applicationID":"3275661,67267027,67267028","licenseKey":"510f1a6865"}
Afterword

Responsibilities, dependencies, interfaces, ducks, inheritance, behavior sharing, composition, and testingyouve learned it all. Youve immersed yourself in a world of objects, and if this book has achieved its goal, you think differently about objects now than when you first began.

, stated that object-oriented design is about managing dependencies; that statement is still true, but its just one truth about design. A deeper truth is that there is a way in which all objects are identical, regardless of whether they represent entire applications, major subsystems, individual classes, or simple methods. A single object never stands alone; applications consist of objects that are related to one another. Like a key and its lock, a hand and its glove, or a call and its response, objects are defined not by what they do but by the messages that pass between them. Object-oriented design is fractal; the central problem is to define an extensible way for objects to communicate, and at every level of magnification this problem looks the same.

This book is full of rules about how to write coderules for managing dependencies and creating interfaces. Now that you know these rules, you can bend them to your own purposes. The tensions inherent in design mean that these rules are meant to be broken; learning to break them well is a designers greatest strength.

The tenets of design are tools, and with practice they will come naturally into your hand, allowing you to create changeable applications that serve their purpose and bring you joy. Your applications will not be perfect, but do not be discouraged. Perfection is elusive, perhaps even unreachable; this should not impede your desire to achieve it. Persist. Practice. Experiment. Imagine. Do your best work, and all else will follow.

C HAPTER 1 Object-Oriented Design The world is procedural Time flows forward - photo 1

C HAPTER 1 Object-Oriented Design The world is procedural Time flows forward - photo 2

C HAPTER 1
Object-Oriented Design

The world is procedural. Time flows forward and events, one by one, pass by. Your morning procedure may be to get up, brush your teeth, make coffee, dress, and then get to work. These activities can be modeled using procedural software; because you know the order of events, you can write code to do each thing and then quite deliberately string the things together, one after another.

The world is also object-oriented. The objects with which you interact might include a spouse and a cat, or an old car and a pile of bike parts in the garage, or your ticking heart and the exercise plan you use to keep it healthy. Each of these objects comes equipped with its own behavior, and while some of the interactions between them might be predictable, it is entirely possible for your spouse to unexpectedly step on the cat, causing a reaction that rapidly raises everyones heart rate and gives you new appreciation for your exercise regimen.

In a world of objects, new arrangements of behavior emerge naturally. You dont have to explicitly write code for the spouse_steps_on_cat procedure; all you need is a spouse object that takes steps and a cat object that does not like being stepped on. Put these two objects into a room together and unanticipated combinations of behavior will appear.

This book is about designing object-oriented software, and how it views the world as a series of spontaneous interactions between objects. Object-oriented design (OOD) requires that you shift from thinking of the world as a collection of predefined procedures to modeling the world as a series of messages that pass between objects. Failures of OOD might look like failures of coding technique, but they are actually failures of perspective. The first requirement for learning how to do object-oriented design is to immerse yourself in objects; once you acquire an object-oriented perspective, the rest follows naturally.

This book guides you through the immersion process. This chapter starts with a general discussion of OOD. It argues the case for design and then proceeds to describe when to do it and how to judge it. The chapter ends with a brief overview of object-oriented programming that defines the terms used throughout the book.

1.1 In Praise of Design

Software gets built for a reason. The target applicationwhether a trivial game or a program to guide radiation therapyis the entire point. If painful programming were the most cost-effective way to produce working software, programmers would be morally obligated to suffer stoically or to find other jobs.

Fortunately, you do not have to choose between pleasure and productivity. The programming techniques that make code a joy to write overlap with those that most efficiently produce software. The techniques of object-oriented design solve both the moral and the technical dilemmas of programming; following them produces cost-effective software using code that is also a pleasure to work on.

1.1.1 The Problem Design Solves

Imagine writing a new application. Imagine that this application comes equipped with a complete and correct set of requirements. And if you will, imagine one more thing: once written, this application need never change.

For this case, design does not matter. Like a circus performer spinning plates in a world without friction or gravity, you could program the application into motion and then stand back proudly and watch it run forever. No matter how wobbly, the plates of code would rotate on and on, teetering round and round but never quite falling.

As long as nothing changed.

Unfortunately, something will change. It always does. The customers didnt know what they wanted, they didnt say what they meant. You didnt understand their needs, youve learned how to do something better. Even applications that are perfect in every way are not stable. The application was a huge success, now everyone wants more. Change is unavoidable. It is ubiquitous, omnipresent, and inevitable.

Changing requirements are the programming equivalent of friction and gravity. They introduce forces that apply sudden and unexpected pressures that work against the best-laid plans. It is the need for change that makes design matter.

Applications that are easy to change are a pleasure to write and a joy to extend. Theyre flexible and adaptable. Applications that resist change are just the opposite; every change is expensive and each makes the next cost more. Few difficult-to-change applications are pleasant to work on. The worst of them gradually become personal horror films where you star as a hapless programmer, running madly from one spinning plate to the next, trying to stave off the sound of crashing crockery.

Next page
Light

Font size:

Reset

Interval:

Bookmark:

Make

Similar books «Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e»

Look at similar books to Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e. We have selected literature similar in name and meaning in the hope of providing readers with more options to find new, interesting, not yet read works.


Reviews about «Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e»

Discussion, reviews of the book Practical Object-Oriented Design: An Agile Primer Using Ruby, 2/e and just readers' own opinions. Leave your comments, write what you think about the work, its meaning or the main characters. Specify what exactly you liked and what you didn't like, and why you think so.