Code Refactoring

Preview:

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

Recommended