Practical Object-Oriented Design
Autor Sandi Metzen Limba Engleză Paperback – 22 aug 2018
Observăm că succesul unui software nu depinde doar de funcționalitatea sa inițială, ci de capacitatea sa de a fi modificat fără costuri exorbitante. În Practical Object-Oriented Design, Sandi Metz propune o structură progresivă care ghidează cititorul de la micro-designul unei clase la arhitectura interacțiunilor complexe. Analiza începe cu principiul responsabilității unice (Single Responsibility), oferind criterii tehnice clare pentru a decide ce logică aparține unei clase și ce trebuie extras. Apreciem modul în care ediția a doua integrează specificațiile Ruby 2.5, folosind acest limbaj ca un vehicul didactic pentru a ilustra concepte universale. De la capitolul dedicat gestionării dependențelor, unde se pune accent pe cuplajul slab (loose coupling), până la definirea interfețelor flexibile, textul oferă soluții pentru evitarea codului rigid. Pe linia practică a volumului Principles of Package Design, dar cu focus pe designul intern al aplicațiilor și pe mecanisme precum duck typing sau compoziția, cartea demonstrează cum se pot construi sisteme care „supraviețuiesc succesului”. Spre deosebire de Introduction to Software Design with Java, care adoptă o abordare academică și narativă, lucrarea lui Metz este un ghid de implementare directă. Capitolele sunt organizate pentru a rezolva probleme specifice de mentenanță: cum să reducem supraîncărcarea prin tehnici de tip compoziție și cum să aplicăm corect moștenirea. Este o resursă tehnică ce transformă teoria abstractă a obiectelor în reguli de design aplicabile imediat în fluxul de producție.
Preț: 285.38 lei
Preț vechi: 356.73 lei
-20%
Carte disponibilă
Livrare economică 02-16 mai
Livrare express 18-24 aprilie pentru 36.19 lei
Specificații
ISBN-10: 0134456475
Pagini: 288
Dimensiuni: 177 x 231 x 20 mm
Greutate: 0.54 kg
Ediția:2nd edition
Editura: Pearson Education
De ce să citești această carte
Recomandăm această carte programatorilor care doresc să scrie cod sustenabil și ușor de testat. Cititorul câștigă o metodologie clară pentru organizarea logicii de business, învățând să identifice rapid când un obiect preia prea multe responsabilități. Este un curs intensiv de bune practici care transformă programarea dintr-o serie de soluții ad-hoc într-un proces de design riguros și eficient.
Despre autor
Sandi Metz este un consultant software și autor recunoscut pentru expertiza sa în arhitectura orientată pe obiecte. Cu o carieră de peste 30 de ani în dezvoltarea de aplicații complexe, Metz s-a specializat în transformarea codului greu de întreținut în sisteme flexibile. Este o prezență influentă în comunitatea Ruby, fiind celebră pentru capacitatea de a explica principii de design dificile prin analogii simple și exemple practice. Activitatea sa educațională se concentrează pe reducerea costurilor de dezvoltare prin aplicarea corectă a tiparelor de design.
Notă biografică
Cuprins
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