自己掌握或是用到用的重構方法還是很有限的,慢慢在實踐中摸索吧!
refactorings(重構)列表
1.add parameter(新增引數)
2.change bidirectional association to unidirectional(將雙向關聯改為單項)
3.change reference to value (將引用物件改為實值物件)
4.change unidirectional assocation to bidirectional(將單項關聯改為雙向)
5.change value to reference (將實值物件改為引用物件)
6.collapse hierachy(摺疊繼承體系)
7.consolidate conditional expression(合併條件式)
8.consolidate duplicate conditional fragments(合併重複的條件判斷)
9.convert procedural design to objects(將過程化設計轉化為物件設計)
10.decompose conditional (分解條件式)
11.duplicate observed data(複製"被監視資料")
12.encapsulate collection (封裝群集)
13.encapsulate downcast(封裝"向下轉型"動作)
14.encapsulate field(封裝值域)
15.extract class(提煉類)
16.extract hierarchy (提煉繼承體系)
17.extract inte***ce(提煉介面)
18.extract method(提煉函式)
19.extract subclass(提煉子類)
20.extract superclass(提煉超類)
21.form template method(塑造模板函式)
22.hide delegate(隱藏委託關係)
23.hide method(隱藏函式)
24.inline class (將類內聯化)
25.inline method(將函式內聯化)
26.inline temp(將臨時變數內聯化)
27.introduce assertion(引入斷言)
28.introduce explaining ariable(引入解釋性變數)
29.introduce foreign method(引入外加函式)
30.introduce local extension(引入本地擴充套件)
31.introduce null object(引入null物件)
32.introduce prrameter object(引入引數物件)
33.move field (搬移值域)
34.move method(搬移函式)
35.parameterize method(令函式攜帶引數)
36.preserve whole object(保持物件完整)
37.pull up constructor body(建構函式本體上移)
38.pull up field(值域上拉)
39.pull up method(函式上拉)
40.pull down field(值域下降)
41.pull down method(函式下移)
42.remove assignments to parameters(移除函式的賦值動作)
43.remove control flag(移除控制標記)
44.remove middleman(移除中間人)
45.remove parameter(移除引數)
46.remove setting method(移除設定函式)
47.rename method(重新命名函式)
48.replace array with object(以物件取代陣列)
49.replace conditionalwith polymorphism(以多型取代條件式)
50.replace constructor with factory method(以工廠方法取代建構函式)
51.replace data value with object(以物件取代資料值)
52.replace delegation with inheritance(以繼承取代委託)
53.replace error code with exception(以異常取代錯誤碼)
54.replace exception with test(以測試取代異常)
55.replace inheritance with delegation(以委託取代繼承)
56.replace magic number with symbolic constant(以字面常量代替魔法數字)
57.replace method with method object(以函式物件取代函式)
58.replace nested conditional with guard clauses(以衛語句取代條件式)
59.replace parameter with method(以函式取代引數)
60.replace parameter with explicit methods(以明確函式取代引數)
61.replace record with data class(以資料類取代記錄)
62.replace subclass with field(以值域取代子類)
63.replace temp with query(以查詢取代臨時變數)
64.replace type code with class(以類取代型別碼)
65.replace type code with state/strategy(以state/strategy取代性別碼)
66.replace type code with subclass(以子類取代型別碼)
67.self encapsulate field(自封裝值域)
68.separate domain from presentation (將領域和表述/顯示分開)
69.separate query with modifier (將查詢函式和修改函式分離)
70.split tempory variable(剖解臨時變數)
71.substitue algorithm(替換你的演算法)
qzezoj 1585 佇列重構
題面傳送門 對於這道題,正著列舉是很難列舉的,但我們可以反著來。俗話說得好,正難則反。考慮最小的乙個數h ih i hi 則所有數都是大於等於它的,所以它的排位應該是在v iv i vi 考慮第二小的數h jh j hj 則除了h ih i hi 沒有其他數小於它,所以我們可以直接找到除了v iv ...
qzezoj 1585 佇列重構
題面傳送門 對於這道題,正著列舉是很難列舉的,但我們可以反著來。俗話說得好,正難則反。考慮最小的乙個數 h i 則所有數都是大於等於它的,所以它的排位應該是在 v i 考慮第二小的數 h j 則除了 h i 沒有其他數小於它,所以我們可以直接找到除了 v i 外的第 i 位,它的答案就是在那裡。以此...
重構之維 關於重構及《重構》的隨想
重構之維 關於重構及 重構 的隨想 重構 究竟重構了什麼?不止一次地,我聽到我們這個行業裡的大師們對重構技術提出 至少是 置疑 那是我們過去十五年裡一直在做的事 我從 上世紀 70年代就已經開始這樣做了 unix上的黑客們一直都是這樣做的 這些說辭讓我很有興趣探其究竟。在這本 重構 裡,martin...