SPECIAL OFFERS
Keep up with new releases and promotions. Sign up to hear from us.
Rough Cuts are manuscripts that are developed but not yet published, available through Safari. Rough Cuts provide you access to the very latest information on a given topic and offer you the opportunity to interact with the author to influence the final publication.
This is a working draft of a pre-release book. It is available before the published date as part of the Rough Cuts service.
The First Hands-On, Practical, All-Ruby Refactoring Workbook!
Refactoring–the art of improving the design of existing code–has taken the world by storm. So has Ruby. Now, for the first time, there’s a refactoring workbook designed from the ground up for the dynamic Ruby language.
Refactoring in Ruby gives you all the realistic, hands-on practice you need to refactor Ruby code quickly and effectively. You’ll discover how to recognize “code smells,” which signal opportunities for improvement, and then perfect your program’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 you’ll refer to again and again. Along the way, you’ll learn powerful lessons about designing higher quality Ruby software–lessons that will enable you to experience the joy of writing consistently great code.
Refactoring in Ruby will help you
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