did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9780321545046

Refactoring in Ruby

by ;
  • ISBN13:

    9780321545046

  • ISBN10:

    0321545044

  • Edition: 1st
  • Format: Paperback
  • Copyright: 2009-10-15
  • Publisher: Addison-Wesley Professional
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $44.99 Save up to $10.58
  • Digital
    $34.41
    Add to Cart

    DURATION
    PRICE

Supplemental Materials

What is included with this book?

Summary

The First Hands-On, Practical,All-RubyRefactoring Workbook! Refactoringthe art of improving the design of existing codehas taken the world by storm. So has Ruby. Now, for the first time, therers"s a refactoring workbook designed from the ground up for the dynamic Ruby language. Refactoring in Rubygives you all the realistic, hands-on practice you need to refactor Ruby code quickly and effectively. Yours"ll discover how to recognize "code smells," which signal opportunities for improvement, and then perfect your programrs"s design one small, safe step at a time. The book shows you when and how to refactor with both legacy code and during new test-driven development, and walks you through real-world refactoring in detail. The workbook concludes with several applications designed to help practice refactoring in realistic domains, plus a handy code review checklist yours"ll refer to again and again. Along the way, yours"ll learn powerful lessons about designing higher quality Ruby softwarelessons that will enable you to experience the joy of writing consistently great code. Refactoring in Rubywill help you Recognize why poor code design occurs, so you can prevent it from occurring in your own code Master better design techniques that lead to more efficient, reliable, and maintainable software Fix code thatrs"s too long, large, or difficult to follow Ferret out duplication, and express each idea "once and only once" Recognize missing or inadequately formed classes Simplify overly complex relationships between classes and their subclasses Achieve the right balance of responsibilities among objects Make your code easier to test and change Cope with incomplete library modules, and fix runaway dependencies Learn the next steps to takeafteryou refactor

Author Biography

William C. Wake is a senior consultant with Industrial Logic, Inc. From 2007 to early 2009, he managed development at Gene Codes Forensics, Inc., a producer of bioinformatics software. From 2001 through 2006, he was an independent consultant focused on agile software. He’s the author of the Refactoring Workbook (Addison-Wesley, 2004) and coauthor of Design Patterns in Java (Addison-Wesley, 2006). His web site is www.xp123.com.

 

Kevin Rutherford, Ph.D., is an independent agile and TDD coach based in the United Kingdom. He has worked in software development for more than 25 years, and since 1997 has been coaching organizations to become highly responsive service providers. He founded the U.K.’s AgileNorth group and is regularly involved on the agile conference circuit. His working practices focus on use of the Theory of Constraints and code quality, and he is the author of the Reek tool for Ruby. His web site is www.kevinrutherford.co.uk.

Table of Contents

Foreword xvii

Preface xix

About the Authors xxiii

 

Part I: The Art of Refactoring 1

 

Chapter 1: A Refactoring Example 3

Sparkline Script 3

Consistency 6

Testability 8

Greedy Methods 8

Greedy Module 9

Comments 10

Whole Objects 11

Feature Envy 12

Uncommunicative Names 14

Derived Values 15

Wabi-Sabi 17

Summing Up 18

What’s Next 18

 

Chapter 2: The Refactoring Cycle 19

What Is Refactoring? 19

Smells Are Problems 20

The Refactoring Cycle 21

When Are We Done? 21

Test-Driven/Behavior-Driven Development 22

Exercise 23

What’s Next 23

 

Chapter 3: Refactoring Step by Step 25

The Refactoring Environment 25

Inside a Refactoring 26

The Generic Refactoring Micro-Process 30

Exercises 33

What’s Next 33

 

Chapter 4: Refactoring Practice 35

Read Other Books 35

Practice Refactoring 35

Exercises to Try 36

Participate in the Community 37

Exercise 38

What’s Next 38

 

Part II: Code Smells 39

 

Chapter 5: Measurable Smells 41

Comments 42

Long Method 44

Large Module 46

Long Parameter List 48

Exercises 49

 

Chapter 6: Names 57

Type Embedded in Name 59

Uncommunicative Name 60

Inconsistent Names 61

Exercises 62

 

Chapter 7: Unnecessary Complexity 65

Dead Code 66

Speculative Generality 68

Greedy Method 70

Procedural Code 72

Dynamic Code Creation 74

Exercises 76

 

Chapter 8: Duplication 79

Derived Value 80

Repeated Value 81

Duplicated Code 83

Alternative Modules with Different Interfaces 85

Exercises 86

 

Chapter 9: Conditional Logic 93

Nil Check 94

Special Case 96

Complicated Boolean Expression 98

Control Coupling 100

Simulated Polymorphism 101

Exercises 103

 

Chapter 10: Data 107

Open Secret 108

Data Class 110

Data Clump 112

Temporary Field 114

Exercises 115

 

Chapter 11: Inheritance 125

Implementation Inheritance 126

Refused Bequest 128

Inappropriate Intimacy (Subclass Form) 130

Lazy Class 131

Exercises 133

 

Chapter 12: Responsibility 135

Feature Envy 136

Utility Function 138

Global Variable 140

Inappropriate Intimacy (General Form) 141

Message Chain 143

Middle Man 145

Greedy Module 146

Exercises 148


Chapter 13: Accommodating Change 153

Divergent Change 154

Shotgun Surgery 156

Parallel Inheritance Hierarchies 158

Combinatorial Explosion 159

Exercises 160

 

Chapter 14: Libraries 163

Incomplete Library Module 164

Reinvented Wheel 166

Runaway Dependencies 167

Exercises 168

 

Part III: Programs to Refactor 171

 

Chapter 15: A Simple Game 173

Code 173

Refactoring 175

Development Episodes 180

 

Chapter 16: Time Recording 183

Preparing the Soil 187

Substitute Algorithm 191

Optional Extras 194

 

Chapter 17: Calculator 197

Code 198

Refactoring 209

Thank You 211

 

Part IV: Appendices 213

 

Appendix A: Answers to Selected Questions 215

The Refactoring Cycle 215

Refactoring Step by Step 216

Refactoring Practice 216

Measurable Smells 217

Names 220

Unnecessary Complexity 222

Duplication 225

Conditional Logic 230

Data 233

Inheritance 237

Responsibility 239

Accommodating Change 241

Libraries 244

A Simple Game 246

Time Recording 247

 

Appendix B: Ruby Refactoring Tools 251

Code Smell Detectors 251

Environments with Refactoring Support 252

 

Bibliography 253

Index 255

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program