利用這本通過示例"說話"的實例手冊,可以充分發揮重構的強大功能,改善現有的軟件。 身為程序員,你必須具備的一個基本功就是能夠找出并改善有問題的代碼,使程序能夠在軟件的整個生命周期中正常運轉。重構可謂是安全地改善既有代碼設計的一門藝術,由此可以提供高效而的系統,使紛雜凌亂歸于平穩有序,并能限度地抑制異常的出現!重構可能很難掌握,但是在專業顧問William C.Wake所撰寫的這本書中,經由作者娓娓道來,有關內容得以通過一種易于學習的方式展現出來,不僅使學習之旅頗具實效,而且充滿樂趣。 對于許多人來說,學習重構的障礙是如何找出代碼的"壞味道(smell)",即可能存在問題之處。本書并非讓你流水帳式地通讀這些壞味道,而是確保你對這些壞味道有切實的理解。在此奉上了一系列精心組織的問題,通過這些問題的解決,你將會茅塞頓開,不僅會在更深層次上了解重構,而且還將獲得你自己的一些心得體會。Wake采用了實例手冊的方式來組織全書,以幫助你了解最為重要的重構技術并將其應用于代碼之中。這是一種強調學習的方法,要求你必須充分應用本書所提供的諸多技術。除此之外,這種方法還有一個附帶的好處,即盡管當前你所作的工作也許并非重構,利用本書也將有助于你更多地考慮如何創建品質的代碼。 本書提供了以下特性,可令讀者輕松上手: ·方便的"壞味道"速查手冊(嗅探工具) ·描述"壞味道"的標準格式 ·介紹關鍵重構技術的附錄 ·支持重構的Java工具列表 本書面向有Java經驗的程序員,不過C#或C++程序員若對Java有基本了解,也能順利地閱讀本書并學習書中的示例。本書可以作為Martin Fowler所著《重構——改善既有代碼的設計》(中文版和影印版均已由中國電力出版社出版)一書的姐妹篇,該書對多種重構技術提供了循序漸進的介紹。
本書可以作為Martin Fowler所著《重構——改善既有代碼的設計》一書的姐妹篇,書中對多種重構技術提供了循序漸進的介紹。 Wake采用了實例手冊的方法來組織全書,以幫助了解為重要的重構技術并將其應用于代碼之中。這是一種強調學習的方法,要求你必須充分應用本書所提供的諸多技術。除此之外,這種方法還有一個附帶的好處,即盡管你當前所做的工作也許并非重構,利用此實例手冊也將有助于使你更多地考慮如何創建品質的代碼。
Willian C.Wake是一位獨立軟件顧問、教員和培訓師。他致力于程序設計已逾20年,曾任職于Capital One Financial、MCI/WorldCom和VTLS等世界知名大公司。他還是《Extreme Programming Explored》一書的作者。
Preface
1 ROADMAP
Overview
Section 1: Smells within Classes
Section 2: Smells between Classes
Section 3: Programs to Refactor
A Word on the Challenges
SECTION 1 SMELLS WITHIN CLASSES
2 THE REFACTORING CYCLE
What Is Refactoring?
Smells Are Problems
The Refactoring Cycle
When Are We Done?
Inside a Refactoring
Challenges
Conclusion
3 MEASURED SMELLS
Smells Covered
Comments
Long Method
Large Class
Long Parameter List
More Challenges
Conclusion
INTERLUDE 1 SMELLS AND DEFACTORINGS
4 NAME
Smells Covered
Type Embedded in Name (Including Hungarian
Uncommunicative Name
Inconsistent Names
5 UNNECESSARY COMPLEXITY
Smells Covered
Dead Code
Speculative Generality
INTERLUDE 2 INVERSES
6 DUPLICATION
Smells Covered
Magic Number
Duplicated Code
Alternative Classes with Different Interfaces
Challenges
7 CONDITIONAL LOGIC
Smells Covered
Null Check
Complicated Boolean Expression
Special Case
Simulated Inheritance (Switch Statement
INTERLUDE 3 DESIGN PATTERNS
SECTION 2 SMELLS BETWEEN CLASSES
8 DATA
Smells Covered
Primitive Obsession
Data Class
Data Clump
Temporary Field
9 INHERITANCE
10 RESPONSIBILITY
11 ACCOMMODATING CHANGE
12 LIBRARY CLASSES
13 A DATABASE EXAMPLE
14 A SIMPLE GAME
15 CATALOG
16 PLANNING GAME SIMULATOR
17 WHERE TO GO FROM HERE
SECTION 4 APPENDIXES
BIBLIOGRAPHY
INDEX