利用這本通過(guò)示例"說(shuō)話(huà)"的實(shí)例手冊(cè),可以充分發(fā)揮重構(gòu)的強(qiáng)大功能,改善現(xiàn)有的軟件。 身為程序員,你必須具備的一個(gè)基本功就是能夠找出并改善有問(wèn)題的代碼,使程序能夠在軟件的整個(gè)生命周期中正常運(yùn)轉(zhuǎn)。重構(gòu)可謂是安全地改善既有代碼設(shè)計(jì)的一門(mén)藝術(shù),由此可以提供高效而的系統(tǒng),使紛雜凌亂歸于平穩(wěn)有序,并能限度地抑制異常的出現(xiàn)!重構(gòu)可能很難掌握,但是在專(zhuān)業(yè)顧問(wèn)William C.Wake所撰寫(xiě)的這本書(shū)中,經(jīng)由作者娓娓道來(lái),有關(guān)內(nèi)容得以通過(guò)一種易于學(xué)習(xí)的方式展現(xiàn)出來(lái),不僅使學(xué)習(xí)之旅頗具實(shí)效,而且充滿(mǎn)樂(lè)趣。 對(duì)于許多人來(lái)說(shuō),學(xué)習(xí)重構(gòu)的障礙是如何找出代碼的"壞味道(smell)",即可能存在問(wèn)題之處。本書(shū)并非讓你流水帳式地通讀這些壞味道,而是確保你對(duì)這些壞味道有切實(shí)的理解。在此奉上了一系列精心組織的問(wèn)題,通過(guò)這些問(wèn)題的解決,你將會(huì)茅塞頓開(kāi),不僅會(huì)在更深層次上了解重構(gòu),而且還將獲得你自己的一些心得體會(huì)。Wake采用了實(shí)例手冊(cè)的方式來(lái)組織全書(shū),以幫助你了解最為重要的重構(gòu)技術(shù)并將其應(yīng)用于代碼之中。這是一種強(qiáng)調(diào)學(xué)習(xí)的方法,要求你必須充分應(yīng)用本書(shū)所提供的諸多技術(shù)。除此之外,這種方法還有一個(gè)附帶的好處,即盡管當(dāng)前你所作的工作也許并非重構(gòu),利用本書(shū)也將有助于你更多地考慮如何創(chuàng)建品質(zhì)的代碼。 本書(shū)提供了以下特性,可令讀者輕松上手: ·方便的"壞味道"速查手冊(cè)(嗅探工具) ·描述"壞味道"的標(biāo)準(zhǔn)格式 ·介紹關(guān)鍵重構(gòu)技術(shù)的附錄 ·支持重構(gòu)的Java工具列表 本書(shū)面向有Java經(jīng)驗(yàn)的程序員,不過(guò)C#或C++程序員若對(duì)Java有基本了解,也能順利地閱讀本書(shū)并學(xué)習(xí)書(shū)中的示例。本書(shū)可以作為Martin Fowler所著《重構(gòu)——改善既有代碼的設(shè)計(jì)》(中文版和影印版均已由中國(guó)電力出版社出版)一書(shū)的姐妹篇,該書(shū)對(duì)多種重構(gòu)技術(shù)提供了循序漸進(jìn)的介紹。
本書(shū)可以作為Martin Fowler所著《重構(gòu)——改善既有代碼的設(shè)計(jì)》一書(shū)的姐妹篇,書(shū)中對(duì)多種重構(gòu)技術(shù)提供了循序漸進(jìn)的介紹。 Wake采用了實(shí)例手冊(cè)的方法來(lái)組織全書(shū),以幫助了解為重要的重構(gòu)技術(shù)并將其應(yīng)用于代碼之中。這是一種強(qiáng)調(diào)學(xué)習(xí)的方法,要求你必須充分應(yīng)用本書(shū)所提供的諸多技術(shù)。除此之外,這種方法還有一個(gè)附帶的好處,即盡管你當(dāng)前所做的工作也許并非重構(gòu),利用此實(shí)例手冊(cè)也將有助于使你更多地考慮如何創(chuàng)建品質(zhì)的代碼。
Willian C.Wake是一位獨(dú)立軟件顧問(wèn)、教員和培訓(xùn)師。他致力于程序設(shè)計(jì)已逾20年,曾任職于Capital One Financial、MCI/WorldCom和VTLS等世界知名大公司。他還是《Extreme Programming Explored》一書(shū)的作者。
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