Upload
yu-chih-lin
View
76
Download
0
Embed Size (px)
Citation preview
Code RefactoringPresented by Steven
Dec. 2016
Why
2
3
4
FastRunnable
5
FastRunnable
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-downRenamingextract {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
● whatMaintainability
Extensibility43
44
45