Code Refactoring
Presented by Steven
Dec. 2016
Why
2
3
4
Fast
Runnable
5
Fast
Runnable
6
Spaghetti Code
● program flow is conceptually like a bowl of
spaghetti, i.e. twisted and tangled.
● complex and confusing control structures that are
barely understandable
7
8
What
9
● Code refactoring is the process of restructuring
existing computer code without changing its
external behaviour.
Code Refactoring
10
在不改變軟體的外在行為下,改
善既有軟體的內部設計。
11
2 Advantages
6 Techniques
12
Advantages
13
Expressiveness
14
Expressiveness
Complexity
15
Expressiveness
Complexity
Readability
16
17
Expressiveness
Complexity
Readability
18
Maintainability
Expressiveness
Complexity
Readability
19
Maintainability
Expressiveness
Complexity
Readability
Extensibility
20
Maintainability Extensibility
21
Techniques
22
Generalization ExtractionEncapsulation
Pulling-up Pushing-downRenaming
23
Generalization ExtractionEncapsulation
Pulling-up Pushing-downRenamingcommon: private / (default) / protected / public
24
Generalization ExtractionEncapsulation
Pulling-up Pushing-downRenamingcreate more general types, e.g., super-classes
25
Generalization ExtractionEncapsulation
Pulling-up Pushing-downRenaming
extract {classes, methods, funcions}
fewer methods → clearer purpose and functionality
26
Generalization ExtractionEncapsulation
Pulling-up Pushing-downRenaming
rename {methods, fields}
27
Generalization ExtractionEncapsulation
Pulling-up Pushing-downRenaming
moving methods between parent/child classes
28
Generalization ExtractionEncapsulation
Pulling-up Pushing-downRenaming
http://refactoring.com/catalog/index.html29
How
30
Encapsulation 31
Encapsulation 32
data / field → private
Setter & Getter
Encapsulation 33
Generalization 34
Generalization 35
Generalization 36
Generalization 37
Generalization 38
Renaming 39
Renaming 40
Conclusion
41
● what
42
● what
Maintainability
Extensibility
43
44
45

Code Refactoring