Title: M2 ????
1???????????????????????????????????????
2????
- ??????????????????????????
- ???????????
- ????????
- ??????????
- ? ???????????????????
3?????
- ??
- ????
- ????
- ????
- ?????????
4????????
- ???????????
- ????????????????????,????????????
- ?????????????
- ?????????????,?????????????
5????????????
- Step 1 ?????????????????(Bad Smell)???
- ????????
- ???????
- Step 2 ???????????????????????
- ????????????????????????
- Step 3 ??????????????????
- Step 4 ????????
- Step 5 ??????????????????????
6???????????????????
- ??????????????
- Bad Smell?????????????????????????????????????
- ?????????
- ?????????
- ????
- ??????????????????????????????????????????????
7???????
- ?????????????????
- ???? ????????????
- ?????????????
- ???????????????
- ????????????????????
- ????????????????
- Extract Method
- Move Method
- Pull Up Method
- ??????????????
- ??????????????
8??????????????
- ????????????????????
- ??
- ????????
- ??????????????
- ??
- ???????
- ???????????????????????
- ??????
- ???????????????????????
- ???????????
9???????
- ?????????????????
- ???? ????????????
- ?????????????
- ???????????????
- ????????????????????
- ????????????????
- Extract Method
- Move Method
- Pull Up Method
- ??????????????
- ??????????????
10????????????Bad Smell???
- ???????????,??????????
- ?????????????????
- ?????????????????
- ?????????
- ??????????????
- ????????? 1
- LOC(Lines Of Code)
- ?????????
- LVA(Local Variable Availability)
11????????????
- ?????????????????????????????
- ??????private??
- ?????????????????????????
- ???????????
- ?????????????????????????????????????
- ???????????????????
- ??????????????????????????
- ????????????
? ????????????????
12??????????????
int drawText(Graphics g, int x, int y, int p0,
int p1) int returnVal super.drawText(g,
x, y, p0, p1) String token null int
toknePos p0 String buffer
getDocument.getText(p0, p1) LangHighlight
lang getLangHighlight() StringTokenizer
tokens null if(lang LangHighlight.JAVA)
toknes new StringTokenizer(buffer,
, true) else if(lang
LangHighlight.COBOL) tokens new
StringTokenizer(buffer, , true) else
tokens new StringTokenizer(buffer, ,
true) (??)
return returnVal
int drawText(Graphics g, int x, int y, int p0,
int p1) int returnVal super.drawText(g,
x, y, p0, p1) String token null int
toknePos p0 String buffer
getDocument.getText(p0, p1) StringTokenizer
tokens getTokens(buffer)
(??) return
returnVal StringTokenizer getTokens(String
buffer) LangHighlight lang
getLangHighlight() StringTokenizer tokens
if(lang LangHighlight.JAVA) toknes
new StringTokenizer(buffer, , true)
else if(lang LangHighlight.COBOL)
tokens new StringTokenizer(buffer, , true)
else tokens new StringTokenizer(buffe
r, , true) return tokens
drawText????? ???????
drawText????? ??????????
????drawText????????? 9
??????
????drawText????????? 10
13???????
- ?????????????????
- ???? ????????????
- ?????????????
- ???????????????
- ????????????????????
- ????????????????
- Extract Method
- Move Method
- Pull Up Method
- ??????????????
- ??????????????
14????????????
- ??????????????????????????
- ???????????????????????????????1
- ?????M????F(M)????
1??.??????????????????????????????. ?????????43(
6)1625-1637, Jun 2002.
15?????????????
void METHOD() VAR v1, v2, v3
BLOCK1 VAR v4,v5
BLOCK2 v4
v1 v2
BLOCK3 v5 v1 4
v5 v1 v2
16??????2????????
- ???????????????????
- ????????2???????????????????
- 1?????????????
??????
????????????
17?????????????
sample ( )
while
while
if
for
?????
?????
if
18??????????
- ??????????????????
- ????????????????????
- B1?B2??????????
- ??????????
- 2????????1??????????????
19??????????
- ??????????????????
- ???????? ???? ?????????????????????
??????? - ??????????
- ????????????????????????????????
20???????????
void METHOD() BLOCK1
VAR v1,v2,v3,v4
BLOCK2 VAR v5,v6 v5
v1 v2 v6 v1 v5
void METHOD() BLOCK1
VAR v1,v2,v3,v4
newMETHOD(v1,v2)
void newMethod(VAR v1, VAR v2)
BLOCK2 VAR v5,v6 v5 v1
v2 v6 v1 v5
21??????????????????????
- RESULT NULL
- B ??????????
- HCB B ?????????????(B???)
- NHCB B ????????????????
- OB B?????????
- if ( NHCB ?????)
- if ( VC( OB, HCB ) gt VC( OB, NHCB ) )
- NHCB????????????
- else
- HCB????????????
- EXIT
- end if
- end if
- if ( OB?HCB????????? )
- if ( OB?????????? )
- B OB
- GOTO ?3
- end if
- else
22??????????????????
void METHOD() VAR v1, v2, v3, v4, v5
BLOCK1
BLOCK2 VAR v8 v1 v2
v6 v3 v8 v7 v4 v8
VAR v9 0
BLOCK3 v9 v1 v2 v6
v5 v7 v9
BLOCK4 BLOCK5
VAR v12, v13, v14
v10 v12 v13 v14
23????
- ???? Java
- ????????
- ??????????
- JHotDraw
- ??????????
- ?????????????
- ???????????????
- ????
- Bad smell?????????
- ??????????????????
- ??????????????????????????
24???
for1
for2
- ???????
- ????????? 12
- ??
- ?????(if1)
- LVA 0.233
- If1,for3,for4??????
- ?????
- ???????
- ???????????
for3
for4
if1
25????
- Eclipse???????????
- ?????(????????????4)????
- ???????????????
- ?????????????????????
- ???1????,??????????????
- ????????????????????????
- ???????????????????
- Murphy-Hill????
- ????????????????????
- ??????
- ??????????????
- ?????????????
26?????????
- ???
- ??????????????????????????????????????
- ???????????
- ????????????
- LVA
- ??????
- ?????
- ?????????????
- LVA????????
27(No Transcript)