Refactoring
Home > Computing and Information Technology > Computer programming / software engineering > Programming and scripting languages: general > Refactoring: Ruby Edition
Refactoring: Ruby Edition

Refactoring: Ruby Edition

|
     0     
5
4
3
2
1




Out of Stock


Notify me when this book is in stock
About the Book

The Definitive Refactoring Guide, Fully Revamped for Ruby   With refactoring, programmers can transform even the most chaotic software into well-designed systems that are far easier to evolve and maintain. What’s more, they can do it one step at a time, through a series of simple, proven steps. Now, there’s an authoritative and extensively updated version of Martin Fowler’s classic refactoring book that utilizes Ruby examples and idioms throughout–not code adapted from Java or any other environment.   The authors introduce a detailed catalog of more than 70 proven Ruby refactorings, with specific guidance on when to apply each of them, step-by-step instructions for using them, and example code illustrating how they work. Many of the authors’ refactorings use powerful Ruby-specific features, and all code samples are available for download.   Leveraging Fowler’s original concepts, the authors show how to perform refactoring in a controlled, efficient, incremental manner, so you methodically improve your code’s structure without introducing new bugs. Whatever your role in writing or maintaining Ruby code, this book will be an indispensable resource.   This book will help you Understand the core principles of refactoring and the reasons for doing it Recognize “bad smells” in your Ruby code Rework bad designs into well-designed code, one step at a time Build tests to make sure your refactorings work properly Understand the challenges of refactoring and how they can be overcome Compose methods to package code properly Move features between objects to place responsibilities where they fit best Organize data to make it easier to work with Simplify conditional expressions and make more effective use of polymorphism Create interfaces that are easier to understand and use Generalize more effectively Perform larger refactorings that transform entire software systems and may take months or years Successfully refactor Ruby on Rails code

Table of Contents:
Foreword . . . xiii Preface . . . xv Acknowledgments . . . xx About the Authors . . . xxii Chapter 1: Refactoring, a First Example . . . 1 The Starting Point . . . 2 The First Step in Refactoring . . . 6 Decomposing and Redistributing the Statement Method . . . 7 Replacing the Conditional Logic on Price Code with Polymorphism . . . 32 Final Thoughts . . . 50 Chapter 2: Principles in Refactoring . . . 51 Where Did Refactoring Come From? . . . 51 Defining Refactoring . . . 52 Why Should You Refactor? . . . 54 When Should You Refactor? . . . 57 Why Refactoring Works . . . 60 What Do I Tell My Manager? . . . 61 Indirection and Refactoring . . . 61 Problems with Refactoring . . . 63 Refactoring and Design. . . . 67 It Takes A While to Create Nothing . . . 69 Refactoring and Performance . . . 70 Optimizing a Payroll System . . . 71 Chapter 3: Bad Smells in Code . . . 73 Duplicated Code . . . 74 Long Method . . . 74 Large Class . . . 76 Long Parameter List . . . 76 Divergent Change . . . 77 Shotgun Surgery . . . 78 Feature Envy . . . 78 Data Clumps . . . 79 Primitive Obsession . . . 79 Case Statements . . . 80 Parallel Inheritance Hierarchies . . . 81 Lazy Class . . . 81 Speculative Generality . . . 81 Temporary Field . . . 82 Message Chains . . . 82 Middle Man . . . 83 Inappropriate Intimacy . . . 83 Alternative Classes with Different Interfaces . . . 83 Incomplete Library Class . . . 84 Data Class . . . 84 Refused Bequest . . . 84 Comments . . . 85 Metaprogramming Madness . . . 86 Disjointed API . . . 86 Repetitive Boilerplate . . . 86 Chapter 4: Building Tests . . . 87 The Value of Self-Testing Code . . . 87 The Test::Unit Testing Framework . . . 88 Developer and Quality Assurance Tests . . . 91 Adding More Tests . . . 92 Chapter 5: Toward a Catalog of Refactorings . . . 97 Format of the Refactorings . . . 97 Finding References . . . 99 Chapter 6: Composing Methods . . . 101 Extract Method . . . 102 Inline Method . . . 108 Inline Temp . . . 110 Replace Temp with Query. . . 111 Replace Temp with Chain . . . 114 Introduce Explaining Variable . . . 117 Split Temporary Variable . . . 121 Remove Assignments to Parameters . . . 124 Replace Method with Method Object . . . 127 Substitute Algorithm . . . 131 Replace Loop with Collection Closure Method . . . 133 Extract Surrounding Method . . . 135 Introduce Class Annotation . . . 139 Introduce Named Parameter . . . 142 Remove Named Parameter . . . 147 Remove Unused Default Parameter . . . 150 Dynamic Method Definition . . . 152 Replace Dynamic Receptor with Dynamic Method Definition . . . 158 Isolate Dynamic Receptor . . . 160 Move Eval from Runtime to Parse Time . . . 165 Chapter 7: Moving Features Between Objects . . . 167 Move Method . . . 167 Move Field . . . 172 Extract Class . . . 175 Inline Class . . . 179 Hide Delegate . . . 181 Remove Middle Man . . . 185 Chapter 8: Organizing Data . . . 187 Self Encapsulate Field . . . 188 Replace Data Value with Object . . . 191 Change Value to Reference . . . 194 Change Reference to Value . . . 198 Replace Array with Object . . . 201 Replace Hash with Object . . . 206 Change Unidirectional Association to Bidirectional . . . 210 Change Bidirectional Association to Unidirectional . . . 213 Replace Magic Number with Symbolic Constant . . . 217 Encapsulate Collection . . . 219 Replace Record with Data Class . . . 224 Replace Type Code with Polymorphism . . . 225 Replace Type Code with Module Extension . . . 232 Replace Type Code with State/Strategy . . . 239 Replace Subclass with Fields . . . 251 Lazily Initialized Attribute . . . 255 Eagerly Initialized Attribute . . . 257 Chapter 9: Simplifying Conditional Expressions . . . 261 Decompose Conditional . . . 261 Recompose Conditional . . . 264 Consolidate Conditional Expression . . . 265 Consolidate Duplicate Conditional Fragments . . . 268 Remove Control Flag . . . 269 Replace Nested Conditional with Guard Clauses . . . 274 Replace Conditional with Polymorphism . . . 279 Introduce Null Object . . . 284 Introduce Assertion . . . 292 Chapter 10: Making Method Calls Simpler . . . 297 Rename Method . . . 298 Add Parameter . . . 300 Remove Parameter . . . 302 Separate Query from Modifier . . . 303 Parameterize Method . . . 307 Replace Parameter with Explicit Methods . . . 310 Preserve Whole Object . . . 313 Replace Parameter with Method . . . 317 Introduce Parameter Object . . . 320 Remove Setting Method . . . 324 Hide Method . . . 327 Replace Constructor with Factory Method . . . 328 Replace Error Code with Exception . . . 332 Replace Exception with Test . . . 337 Introduce Gateway . . . 341 Introduce Expression Builder . . . 346 Chapter 11: Dealing with Generalization . . . 353 Pull Up Method . . . 353 Push Down Method . . . 356 Extract Module . . . 357 Inline Module . . . 362 Extract Subclass . . . 363 Introduce Inheritance . . . 368 Collapse Heirarchy . . . 371 Form Template Method . . . 372 Replace Inheritance with Delegation . . . 386 Replace Delegation with Hierarchy . . . 389 Replace Abstract Superclass with Module . . . 392 Chapter 12: Big Refactorings . . . 397 The Nature of the Game . . . 397 Why Big Refactorings Are Important . . . 398 Four Big Refactorings . . . 398 Tease Apart Inheritance . . . 399 Convert Procedural Design to Objects . . . 405 Separate Domain from Presentation . . . 406 Extract Hierarchy . . . 412 Chapter 13: Putting It All Together . . . 417 References . . . 421 Index . . . 423


Best Sellers


Product Details
  • ISBN-13: 9780321604170
  • Publisher: Pearson Education (US)
  • Publisher Imprint: Addison-Wesley Educational Publishers Inc
  • Language: English
  • Sub Title: Ruby Edition
  • ISBN-10: 0321604172
  • Publisher Date: 15 Oct 2009
  • Binding: Digital download
  • No of Pages: 480


Similar Products

Add Photo
Add Photo

Customer Reviews

REVIEWS      0     
Click Here To Be The First to Review this Product
Refactoring: Ruby Edition
Pearson Education (US) -
Refactoring: Ruby Edition
Writing guidlines
We want to publish your review, so please:
  • keep your review on the product. Review's that defame author's character will be rejected.
  • Keep your review focused on the product.
  • Avoid writing about customer service. contact us instead if you have issue requiring immediate attention.
  • Refrain from mentioning competitors or the specific price you paid for the product.
  • Do not include any personally identifiable information, such as full names.

Refactoring: Ruby Edition

Required fields are marked with *

Review Title*
Review
    Add Photo Add up to 6 photos
    Would you recommend this product to a friend?
    Tag this Book Read more
    Does your review contain spoilers?
    What type of reader best describes you?
    I agree to the terms & conditions
    You may receive emails regarding this submission. Any emails will include the ability to opt-out of future communications.

    CUSTOMER RATINGS AND REVIEWS AND QUESTIONS AND ANSWERS TERMS OF USE

    These Terms of Use govern your conduct associated with the Customer Ratings and Reviews and/or Questions and Answers service offered by Bookswagon (the "CRR Service").


    By submitting any content to Bookswagon, you guarantee that:
    • You are the sole author and owner of the intellectual property rights in the content;
    • All "moral rights" that you may have in such content have been voluntarily waived by you;
    • All content that you post is accurate;
    • You are at least 13 years old;
    • Use of the content you supply does not violate these Terms of Use and will not cause injury to any person or entity.
    You further agree that you may not submit any content:
    • That is known by you to be false, inaccurate or misleading;
    • That infringes any third party's copyright, patent, trademark, trade secret or other proprietary rights or rights of publicity or privacy;
    • That violates any law, statute, ordinance or regulation (including, but not limited to, those governing, consumer protection, unfair competition, anti-discrimination or false advertising);
    • That is, or may reasonably be considered to be, defamatory, libelous, hateful, racially or religiously biased or offensive, unlawfully threatening or unlawfully harassing to any individual, partnership or corporation;
    • For which you were compensated or granted any consideration by any unapproved third party;
    • That includes any information that references other websites, addresses, email addresses, contact information or phone numbers;
    • That contains any computer viruses, worms or other potentially damaging computer programs or files.
    You agree to indemnify and hold Bookswagon (and its officers, directors, agents, subsidiaries, joint ventures, employees and third-party service providers, including but not limited to Bazaarvoice, Inc.), harmless from all claims, demands, and damages (actual and consequential) of every kind and nature, known and unknown including reasonable attorneys' fees, arising out of a breach of your representations and warranties set forth above, or your violation of any law or the rights of a third party.


    For any content that you submit, you grant Bookswagon a perpetual, irrevocable, royalty-free, transferable right and license to use, copy, modify, delete in its entirety, adapt, publish, translate, create derivative works from and/or sell, transfer, and/or distribute such content and/or incorporate such content into any form, medium or technology throughout the world without compensation to you. Additionally,  Bookswagon may transfer or share any personal information that you submit with its third-party service providers, including but not limited to Bazaarvoice, Inc. in accordance with  Privacy Policy


    All content that you submit may be used at Bookswagon's sole discretion. Bookswagon reserves the right to change, condense, withhold publication, remove or delete any content on Bookswagon's website that Bookswagon deems, in its sole discretion, to violate the content guidelines or any other provision of these Terms of Use.  Bookswagon does not guarantee that you will have any recourse through Bookswagon to edit or delete any content you have submitted. Ratings and written comments are generally posted within two to four business days. However, Bookswagon reserves the right to remove or to refuse to post any submission to the extent authorized by law. You acknowledge that you, not Bookswagon, are responsible for the contents of your submission. None of the content that you submit shall be subject to any obligation of confidence on the part of Bookswagon, its agents, subsidiaries, affiliates, partners or third party service providers (including but not limited to Bazaarvoice, Inc.)and their respective directors, officers and employees.

    Accept

    New Arrivals

    Inspired by your browsing history


    Your review has been submitted!

    You've already reviewed this product!