Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Espaรฑol
Portuguรชs
Franรงais
Deutsche
Cancel
Save
EN
Uploaded by
Ji Ung Lee
PPT, PDF
688 views
Refactoring - Chapter 8.2
Refactoring[Martin Fowler] Chapter 8
Software
โฆ
Read more
0
Save
Share
Embed
Embed presentation
Download
Downloaded 10 times
1
/ 10
2
/ 10
3
/ 10
4
/ 10
5
/ 10
6
/ 10
7
/ 10
8
/ 10
9
/ 10
10
/ 10
More Related Content
PPTX
ํฌํธํด๋ฆฌ์ค์์ ์ฌ์ฉํ ๋ชจ๋ C++
by
KWANGIL KIM
ย
PDF
2.Startup JavaScript - ์ฐ์ฐ์
by
Circulus
ย
PDF
W14 chap13
by
์ ์ ์
ย
PDF
แแ ฉแแ ฆแฏแ แ ตแผ แแ งแซแแ ณแธ ๋ฆฌ๋ทฐ
by
beom kyun choi
ย
PDF
6 swift แแ ฉแแ ณแธแแ กแทแแ ฎ
by
Changwon National University
ย
PDF
6 function
by
์ ์ ์
ย
PPTX
Startup JavaScript 6 - ํจ์, ์ค์ฝํ, ํด๋ก์
by
Circulus
ย
PPTX
Startup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ์์ธ์ฒ๋ฆฌ
by
Circulus
ย
ํฌํธํด๋ฆฌ์ค์์ ์ฌ์ฉํ ๋ชจ๋ C++
by
KWANGIL KIM
ย
2.Startup JavaScript - ์ฐ์ฐ์
by
Circulus
ย
W14 chap13
by
์ ์ ์
ย
แแ ฉแแ ฆแฏแ แ ตแผ แแ งแซแแ ณแธ ๋ฆฌ๋ทฐ
by
beom kyun choi
ย
6 swift แแ ฉแแ ณแธแแ กแทแแ ฎ
by
Changwon National University
ย
6 function
by
์ ์ ์
ย
Startup JavaScript 6 - ํจ์, ์ค์ฝํ, ํด๋ก์
by
Circulus
ย
Startup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ์์ธ์ฒ๋ฆฌ
by
Circulus
ย
What's hot
PPTX
Startup JavaScript 5 - ๊ฐ์ฒด(Date, RegExp, Object, Global)
by
Circulus
ย
PDF
์๋ฐ8 ์คํธ๋ฆผ API ์๊ฐ
by
beom kyun choi
ย
PDF
7๊ฐ์ง ๋์์ฑ ๋ชจ๋ธ - ๋ฐ์ดํฐ ๋ณ๋ ฌ์ฑ
by
HyeonSeok Choi
ย
PPTX
Startup JavaScript 4 - ๊ฐ์ฒด
by
Circulus
ย
PDF
Es2015 Simple Overview
by
Kim Hunmin
ย
PDF
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
by
NAVER D2
ย
PDF
5 swift แแ ตแแ ฉแแ กแทแแ ฎ
by
Changwon National University
ย
PPTX
[devil's camp] - ์๊ณ ๋ฆฌ์ฆ ๋ํ์ STL (๋ฐ์ธ์)
by
NAVER D2
ย
PDF
์ค์ํํธ ์ฑ๋ฅ ์ดํดํ๊ธฐ
by
Yongha Yoo
ย
PPTX
์๋ฐ์คํฌ๋ฆฝํธ ํด๋์ค์ ํ๋กํ ํ์ (prototype of class)
by
ํํฌ๋ฆฌ์๋(๊ตฌ๋ก๋์งํธ๋จ์ง์ญ3๋ฒ์ถ๊ตฌ 2๋ถ๊ฑฐ๋ฆฌ)
ย
PPTX
แแ กแแ ตแแ ฅแซ+Operator+แแ ตแแ ขแแ กแแ ต 20160409
by
Yong Joon Moon
ย
PDF
ํจ์์ ์ฌ๊ณ 2์ฅ
by
HyeonSeok Choi
ย
PPTX
Java8 ๋๋ค
by
Jong Woo Rhee
ย
PPTX
Tdd 4์ฅ
by
Jong Pil Won
ย
PPTX
Just java
by
Jong Wook Kim
ย
PDF
[C++ Korea 2nd Seminar] C++17 Key Features Summary
by
Chris Ohk
ย
PPTX
Javascript ์คํ ๊ฐ๋ฅํ ์ฝ๋(Executable Code)์ ์คํ ์ฝํ ์คํธ(Execution Context), Lexical En...
by
Young-Beom Rhee
ย
PPTX
ํ๋ก ํธ์๋์คํฐ๋ E05 js closure oop
by
Young-Beom Rhee
ย
PDF
์น๊ณ ๋ฏ๊ณ ๋ง๋ณด๊ณ ์ฆ๊ธฐ๋ ์คํธ๋ฆผ API
by
Arawn Park
ย
DOCX
Javascript ์๋ฒฝ ๊ฐ์ด๋ ์ ๋ฆฌ
by
ETRIBE_STG
ย
Startup JavaScript 5 - ๊ฐ์ฒด(Date, RegExp, Object, Global)
by
Circulus
ย
์๋ฐ8 ์คํธ๋ฆผ API ์๊ฐ
by
beom kyun choi
ย
7๊ฐ์ง ๋์์ฑ ๋ชจ๋ธ - ๋ฐ์ดํฐ ๋ณ๋ ฌ์ฑ
by
HyeonSeok Choi
ย
Startup JavaScript 4 - ๊ฐ์ฒด
by
Circulus
ย
Es2015 Simple Overview
by
Kim Hunmin
ย
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
by
NAVER D2
ย
5 swift แแ ตแแ ฉแแ กแทแแ ฎ
by
Changwon National University
ย
[devil's camp] - ์๊ณ ๋ฆฌ์ฆ ๋ํ์ STL (๋ฐ์ธ์)
by
NAVER D2
ย
์ค์ํํธ ์ฑ๋ฅ ์ดํดํ๊ธฐ
by
Yongha Yoo
ย
์๋ฐ์คํฌ๋ฆฝํธ ํด๋์ค์ ํ๋กํ ํ์ (prototype of class)
by
ํํฌ๋ฆฌ์๋(๊ตฌ๋ก๋์งํธ๋จ์ง์ญ3๋ฒ์ถ๊ตฌ 2๋ถ๊ฑฐ๋ฆฌ)
ย
แแ กแแ ตแแ ฅแซ+Operator+แแ ตแแ ขแแ กแแ ต 20160409
by
Yong Joon Moon
ย
ํจ์์ ์ฌ๊ณ 2์ฅ
by
HyeonSeok Choi
ย
Java8 ๋๋ค
by
Jong Woo Rhee
ย
Tdd 4์ฅ
by
Jong Pil Won
ย
Just java
by
Jong Wook Kim
ย
[C++ Korea 2nd Seminar] C++17 Key Features Summary
by
Chris Ohk
ย
Javascript ์คํ ๊ฐ๋ฅํ ์ฝ๋(Executable Code)์ ์คํ ์ฝํ ์คํธ(Execution Context), Lexical En...
by
Young-Beom Rhee
ย
ํ๋ก ํธ์๋์คํฐ๋ E05 js closure oop
by
Young-Beom Rhee
ย
์น๊ณ ๋ฏ๊ณ ๋ง๋ณด๊ณ ์ฆ๊ธฐ๋ ์คํธ๋ฆผ API
by
Arawn Park
ย
Javascript ์๋ฒฝ ๊ฐ์ด๋ ์ ๋ฆฌ
by
ETRIBE_STG
ย
Viewers also liked
PPT
์ด์ค์์ ์๊ธฐ์๊ฐ
by
kim inho
ย
PDF
EPG ์ ๋ณด ๊ฒ์์ ์ํ ์์ ๊ธฐ๋ฐ ์์ฐ์ด ๋ํ ์์คํ
by
Seokhwan Kim
ย
PDF
Splunk ๊ต์ก์๋ฃ v1.2
by
JunMyoung(์ค๋ช ) Youn(์ฐ)
ย
PDF
[Pycon 2015] ์ค๋ ๋น์ฅ ๋ฅ๋ฌ๋ ์คํํ๊ธฐ ์ ์ถ์ฉ
by
ํํธ ๊น
ย
PDF
20160203_๋ง์ธ์ฆ๋ฉ_๋ฅ๋ฌ๋์ธ๋ฏธ๋_05 ๋ฅ๋ฌ๋ ์์ฐ์ด์ฒ๋ฆฌ์ ๋ถ๋ฅ์์ง ํฉ์ด๊ท๋ฐ์ฌ
by
Taejoon Yoo
ย
PDF
20160203_๋ง์ธ์ฆ๋ฉ_๋ฅ๋ฌ๋์ธ๋ฏธ๋_03 the game changer ๋ฅ๋ฌ๋ ์ ํ์ค๋ํ
by
Taejoon Yoo
ย
PPTX
์๊ธฐ์๊ฐPpt ๋ฐ์์ ์ ๋๋ค
by
EunSun Park
ย
PDF
์๊ธฐ์๊ฐ(SSS๋ฐํ๋ฉด์ )
by
Youngbin Han
ย
PPTX
๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด์ฒ๋ฆฌ์ ์ฐ๊ตฌ๋ํฅ
by
ํ๋ฐฐ ๊น
ย
PDF
AWS re:Invent ํน์ง(3) โ Amazon ์ธ๊ณต ์ง๋ฅ(AI) ์๋น์ค ๋ฐ AWS ๋ฅ๋ฌ๋ ํ๋ ์์ ํ์ฉ (์ค์์ฐฌ)
by
Amazon Web Services Korea
ย
PDF
Introduce Deep learning & A.I. Applications
by
Mario Cho
ย
PDF
์ง์ ๋ํ๋ฅผ ์ํ ๊น๊ณ ๋์ ๋ฅ๋ฌ๋ PyCon APAC 2016
by
Taehoon Kim
ย
PPTX
์๊ธฐ์๊ฐ
by
ํ์ง ๊ฐ
ย
PPTX
์๊ธฐ์๊ฐ์
by
summerkim
ย
PPTX
20112602์ค๋ณ์ฉ+์๊ธฐ์๊ฐ+ํ๋ฆฌ์ ํ ์ด์
by
๋ณ์ฉ ๋ณ์ฉ
ย
PDF
KTH ์๊ธฐ์๊ฐ, ์งํ PD
by
yamoo9
ย
PPTX
์๊ธฐ์๊ฐ
by
parkmunge
ย
PPTX
์๊ธฐ์๊ฐ(๊ธฐ๋ง๊ณผ์ )
by
์ ์ ํ
ย
์ด์ค์์ ์๊ธฐ์๊ฐ
by
kim inho
ย
EPG ์ ๋ณด ๊ฒ์์ ์ํ ์์ ๊ธฐ๋ฐ ์์ฐ์ด ๋ํ ์์คํ
by
Seokhwan Kim
ย
Splunk ๊ต์ก์๋ฃ v1.2
by
JunMyoung(์ค๋ช ) Youn(์ฐ)
ย
[Pycon 2015] ์ค๋ ๋น์ฅ ๋ฅ๋ฌ๋ ์คํํ๊ธฐ ์ ์ถ์ฉ
by
ํํธ ๊น
ย
20160203_๋ง์ธ์ฆ๋ฉ_๋ฅ๋ฌ๋์ธ๋ฏธ๋_05 ๋ฅ๋ฌ๋ ์์ฐ์ด์ฒ๋ฆฌ์ ๋ถ๋ฅ์์ง ํฉ์ด๊ท๋ฐ์ฌ
by
Taejoon Yoo
ย
20160203_๋ง์ธ์ฆ๋ฉ_๋ฅ๋ฌ๋์ธ๋ฏธ๋_03 the game changer ๋ฅ๋ฌ๋ ์ ํ์ค๋ํ
by
Taejoon Yoo
ย
์๊ธฐ์๊ฐPpt ๋ฐ์์ ์ ๋๋ค
by
EunSun Park
ย
์๊ธฐ์๊ฐ(SSS๋ฐํ๋ฉด์ )
by
Youngbin Han
ย
๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด์ฒ๋ฆฌ์ ์ฐ๊ตฌ๋ํฅ
by
ํ๋ฐฐ ๊น
ย
AWS re:Invent ํน์ง(3) โ Amazon ์ธ๊ณต ์ง๋ฅ(AI) ์๋น์ค ๋ฐ AWS ๋ฅ๋ฌ๋ ํ๋ ์์ ํ์ฉ (์ค์์ฐฌ)
by
Amazon Web Services Korea
ย
Introduce Deep learning & A.I. Applications
by
Mario Cho
ย
์ง์ ๋ํ๋ฅผ ์ํ ๊น๊ณ ๋์ ๋ฅ๋ฌ๋ PyCon APAC 2016
by
Taehoon Kim
ย
์๊ธฐ์๊ฐ
by
ํ์ง ๊ฐ
ย
์๊ธฐ์๊ฐ์
by
summerkim
ย
20112602์ค๋ณ์ฉ+์๊ธฐ์๊ฐ+ํ๋ฆฌ์ ํ ์ด์
by
๋ณ์ฉ ๋ณ์ฉ
ย
KTH ์๊ธฐ์๊ฐ, ์งํ PD
by
yamoo9
ย
์๊ธฐ์๊ฐ
by
parkmunge
ย
์๊ธฐ์๊ฐ(๊ธฐ๋ง๊ณผ์ )
by
์ ์ ํ
ย
Similar to Refactoring - Chapter 8.2
PPTX
Refactoring
by
YongRak Kim
ย
PPTX
Refactoring
by
YongRak Kim
ย
PPTX
[HaU] ์ ์ ๊ธฐ์ ๋ฉด์ ์ค๋น java
by
์ ๋ฆฌ ํ
ย
PPTX
[์๋ฐ์นดํ] ์๋ฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (2017)
by
์ฉํธ ์ต
ย
PPTX
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ณธ
by
์ฉํธ ์ต
ย
PDF
Java programming pdf
by
Ji Hoon Lee
ย
PPTX
Refactoring tutorial
by
Bingu Shim
ย
PDF
์ค์ฉ์ฃผ์ ๋์์ธํจํด 2 ์ธํฐํ์ด์ค๋ก ํ๋ก๊ทธ๋๋ฐํ๊ธฐ
by
Cosmos Shin
ย
PPTX
Java, android ์คํฐํฐ3
by
Heejun Kim
ย
PPTX
ํจ์ํ ์ฌ๊ณ - Functional thinking
by
์ฌ๋ฌธ ์ฌ
ย
PPTX
Refactoring tutorial 1์ฃผ์ฐจ[refactoring ๊ฐ์]
by
bbongcsu
ย
PDF
Java extends
by
Hyosang Hong
ย
PDF
Java_06 ์์
by
Hong Hyo Sang
ย
PPTX
Refactoring Tutorial 1์ฃผ์ฐจ[ Refactoring ๊ฐ์]
by
Bingu Shim
ย
PPTX
Refactoring Tutorial 1์ฃผ์ฐจ[ Refactoring ๊ฐ์]
by
Bingu Shim
ย
PPTX
HolubOnPatterns/chapter2_1
by
์ ํ ์
ย
PPTX
Holub on-patterns-2-1
by
์ ํ ์
ย
PPTX
๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ ํน๊ฐ
by
uEngine Solutions
ย
PPTX
Clean code
by
bbongcsu
ย
PPTX
Design patterns
by
์ฉํ ์ค
ย
Refactoring
by
YongRak Kim
ย
Refactoring
by
YongRak Kim
ย
[HaU] ์ ์ ๊ธฐ์ ๋ฉด์ ์ค๋น java
by
์ ๋ฆฌ ํ
ย
[์๋ฐ์นดํ] ์๋ฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (2017)
by
์ฉํธ ์ต
ย
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ณธ
by
์ฉํธ ์ต
ย
Java programming pdf
by
Ji Hoon Lee
ย
Refactoring tutorial
by
Bingu Shim
ย
์ค์ฉ์ฃผ์ ๋์์ธํจํด 2 ์ธํฐํ์ด์ค๋ก ํ๋ก๊ทธ๋๋ฐํ๊ธฐ
by
Cosmos Shin
ย
Java, android ์คํฐํฐ3
by
Heejun Kim
ย
ํจ์ํ ์ฌ๊ณ - Functional thinking
by
์ฌ๋ฌธ ์ฌ
ย
Refactoring tutorial 1์ฃผ์ฐจ[refactoring ๊ฐ์]
by
bbongcsu
ย
Java extends
by
Hyosang Hong
ย
Java_06 ์์
by
Hong Hyo Sang
ย
Refactoring Tutorial 1์ฃผ์ฐจ[ Refactoring ๊ฐ์]
by
Bingu Shim
ย
Refactoring Tutorial 1์ฃผ์ฐจ[ Refactoring ๊ฐ์]
by
Bingu Shim
ย
HolubOnPatterns/chapter2_1
by
์ ํ ์
ย
Holub on-patterns-2-1
by
์ ํ ์
ย
๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ ํน๊ฐ
by
uEngine Solutions
ย
Clean code
by
bbongcsu
ย
Design patterns
by
์ฉํ ์ค
ย
Refactoring - Chapter 8.2
1.
Chapter 8-2 ๋ฐ์ดํฐ ์ฒด๊ณํ -
JuL-
2.
๋ง๋ฒ ์ซ์๋ฅผ ๊ธฐํธ
์์๋ก ์ ํ (Replace Magic Number with Symbolic Constant) โข ๋ง๋ฒ ์ซ์๋ ํน์ํ ๊ฐ์ ๊ฐ๋ ์ซ์๋ฅผ ์ผ์ปซ๋ ์ฉ์ด๋ก , ์ฌ๋ฌ ๊ณณ์์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ์ซ์๋ฅผ ์ฐธ์กฐํด์ผ ํ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ , ์์ ํด์ผ ํ ์ํฉ์ด ์ค๋ฉด ๋์ฐํ ์ผ์ด ๋ฐ์ํ๋ค . โข ์ฆ , ์์๋ฅผ ํ๋์ฝ๋ฉํ์ง ๋ง์ . class TestA{ public boolean isOverFlow(int curCount){ if(curCount > 10){ return true; } return false; } } class TestB{ public int getMaxCount(){ return 10; } } class TestA{ public boolean isOverFlow(int curCount){ if(curCount > CommonConst.MAX_COUNT){ return true; } return false; } } class TestB{ public int getMaxCount(){ return CommonConst.MAX_COUNT; } } interface CommonConst{ public int MAX_COUNT = 10; }
3.
ํ๋ ์บก์ํ (Encapsulate Field) โข
๋ฐ์ดํฐ๋ ์ ๋๋ก public ์ผ๋ก ์ ์ธํ๋ฉด ์๋๋ค . ๋ฐ๋์ private ํํ์์ setter, getter ๋ฅผ๋ง๋ค์ด ์ฌ์ฉํด์ผ ํ๋ค . โข ์ผํ ์๊ฐํ๊ธฐ์ , publi ์ผ๋ก ํ๋ , setter, getter ๋ฅผ ๋ง๋ค๋ ์ธ๋ถ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ๊ฒ์ ๋งคํ๊ฐ์ง ์๋๊ฐ ๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง , ์ค์ ์ฝ๋ฉ์ ํด๋ณด๋ฉด ๊ทธ๋ ์ง ์๋ค ๋ ๊ฒ์ ๋๋ ์ ์๋ค . ์๋ฅผ ๋ค์ด , ์๋์ ๊ฐ์ ์ฌ์ํ ์ค์๋ฅผ ๋ฏธ์ฐ์ ๋ฐฉ์งํ ์๋ ์ ๊ณ , ๋ฌด์๋ณด๋ค ๋ณ์๋ฅผ ํธ์ถํ๊ฑฐ๋ ์ธํ ํ ๋ ์ผ๊ด ์ฒ๋ฆฌํด์ผ ํ ์ฝ๋๊ฐ ์ถ๊ฐ๋ ๊ฒฝ์ฐ ํด ๋น ๋ณ์์ setter, getter ๋ฅผ ์์ ํ๋ ๊ฒ๋ง์ผ๋ก ๋์ํ ์ ์๋ค . class MyObject{ public int mId = -1; } MyObject myObj = new MyObject(); myObj.mId = 2; // ๋น๋์๋ฌ ์์ด ์ปดํ์ผ ๋ ํ ์์ฒญ๋ side effect ๋ฅผ ๋ง์ฃผํ๊ฒ ๋จ . class MyObject{ private int mId = -1; public int getId(){ return mId; } public void setId(int id){ mId = id; } } MyObject myObj = new MyObject(); myObj.mId = 2; // ๋น๋ ์๋ฌ ๋ฐ์
4.
์ปฌ๋ ์ ์บก์ํ (Encapsulate Collection) โข
์ปฌ๋ ์ ( ๋ฐฐ์ด , ๋ฆฌ์คํธ , ์ธํธ , ๋ฒกํฐ ) ์ getter ๋ ๊ฐ์ฒด ์์ฒด๋ฅผ ๋ฐํํด์๋ ์๋๋ค . โข Java ๋ ๊ธฐ๋ณธ์ ์ผ๋ก pass by value ์ง๋ง , object ๋ฅผ pass ํ ๋๋ object ์ reference ๊ฐ value ๋ก์จ passing ๋ ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์ . โข Thread safe ํ ์ปฌ๋ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ์๋ ๋ ์ฉ์ดํ๋ค . public void foo(Dog d) { d.getName().equals("Max"); // true d = new Dog("Fifi"); d.getName().equals("Fifi"); // true } Dog aDog = new Dog("Max"); foo(aDog); aDog.getName().equals("Max"); // true public void foo(Dog d) { d.getName().equals("Max"); // true d.setName("Fifi"); } Dog aDog = new Dog("Max"); foo(aDog); aDog.getName().equals("Fifi"); // true
5.
๋ ์ฝ๋๋ฅผ ๋ฐ์ดํฐ ํด๋์ค๋ก
์ ํ (Replace Record with Data Class) โข ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ํํ ์ฌ์ฉ๋๋ ๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๋ค ๋ฐ์ดํฐ ๊ฐ์ฒด๋ก ์ ํํ๋ค . โข ๋ค ๋ฐ์ดํฐ๋ , ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ๋ค์ด ์์ง ์์ ๊ฐ์ฒด๋ก , ๊ธฐ๋ฅ ์ถ๊ฐ ์์ด ๋ฐ์ดํฐ์ public ์์ฑ์ด๋ ์ฝ๊ธฐ / ์ฐ๊ธฐ ๋ฉ์๋๋ก ์ ๊ทผํ ์ ์๋ค . ํ๋ก ๊ทธ๋๋จธ ์ ์ฅ์์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ ์ ํต์ ๊ฐ๋ ์ ์๋ฐฐ๋ ๋ค . ํจํด / ์ํฐํจํด์ ์ฌ์ฉ์ ์บก์ํ์ ์์ ํ ์๋ฐฐ๋๋ค .
6.
๋ถ๋ฅ ๋ถํธ๋ฅผ ํด๋์ค๋ก
์ ํ (ReplaceType Code with Class) โข ์ซ์ํ ๋ถ๋ฅ๋ฒํธ๋ฅผ ๋ณ๋์ ํด๋์ค๋ก ์ ํํ๋ฉด ์ฝ๋๊ฐ ์๋นํ ์ดํดํ๊ธฐ ์ฌ์์ง๋ค . โข ์ฑ ์ด ์งํ๋ ์์ ์ java version ์ enum type ์ด ์์ด์์ธ์ง enum type ๊ฐ์ class ๋ฅผ ๋ณ๋๋ก ๋ง๋ค์ด์ ์ค๋ช ํ๊ณ ์๋ค . ์ฐธ๊ณ ๋งํ๊ณ ๊ทธ๋ฅ enum type ์ ์ฐ๋ฉด ๋ ๋ฏ ? public enum Blood { O(1), A(2), B(3), AB(4); private int value = 0; Blood(int i) { value = i; } public int getNumber() { return value; } public static Blood get(int value) { if (value == O.getNumber()) return O; else if (value == A.getNumber()) return A; else if (value == B.getNumber()) return B; else if (value == AB.getNumber()) return AB; return AB; } }
7.
๋ถ๋ฅ ๋ถํธ๋ฅผ ํ์ํด๋์ค๋ก
์ ํ (ReplaceType Code with SubClasses) โข ๋ถ๋ฅ ๋ถํธ๊ฐ ํด๋์ค ๊ธฐ๋ฅ์ ์ํฅ์ ์ค์ ํด๋์ค๋ก ์ ํ ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ ์์ ๊ฒฝ์ฐ ์ฌ์ ์๋ฅผ ํตํด ์กฐ๊ธ์ฉ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๊ฒ ํ๋ค . โข ์ด์ ๊ฐ์ด ์ด ๊ธฐ๋ฒ์ ๋คํ์ฑ์ ๊ฐ๋ฅ์ผํ๋ ์ฌ์ ์์ ์ผ๋ก ์ํํ ๋๊ฐ ๋ง๋ค . public class Employee { private int _type; static final int ENGINEER = 0; static final int SALESMAN = 1; static final int MANAGER = 2; Employee (int type) { _type = type; } } public class Engineer extends Employee { protected Engineer(int type) { super(type); } @Override public int get_type() { return Engineer.ENGINEER; } } public abstract class Employee { private int _type; static final int ENGINEER = 0; static final int SALESMAN = 1; static final int MANAGER = 2; protected Employee(int type) { _type = type; } public static Employee createEmployee(int type) { // if(type == ENGINEER) return new Engineer(type); // else return new Employee(type); switch (type) { case ENGINEER: return new Engineer(type); case SALESMAN: return new Manager(type); case MANAGER: return new Manager(type); default: throw new IllegalArgumentException(โIncorrect Type Codeโ); } } abstract int get_type(); }
8.
๋ถ๋ฅ ๋ถํธ๋ฅผ ์ํ
/ ์ ๋ต ํจํด์ผ๋ก ์ ํ (ReplaceType Code with State/Strategy) โข ์ด ๊ธฐ๋ฒ์ โ๋ถ๋ฅ ๋ถํธ๋ฅผ ํ์ํด๋์ค๋ก ์ ํ๏ผ๊ณผ ๋น์ทํ์ง๋ง , ๋ถ๋ฅ ๋ถํธ ๊ฐ ๊ฐ์ฒด ์๋ช ์ฃผ๊ธฐ ๋์ ๋ณํ ๋๋ ๋ค๋ฅธ ์ด์ ๋ก ํ์ํด๋์ค๋ก ๋ง๋ค ์ ์ ์ ๋ ์ฌ์ฉํ๋ค . class Employee { private int _type; static final int ENGINEER = 0; static final int SALESMAN = 1; static final int MANAGER = 2; Employee (int type) { _type = type; } int payAmount() { switch (_type) { case ENGINEER: return _monthlySalary; case SALESMAN: return _monthlySalary + _commission; case MANAGER: return _monthlySalary + _bonus; default: throw new RuntimeException("Incorrect Employee"); } }
9.
๋ถ๋ฅ ๋ถํธ๋ฅผ ์ํ
/ ์ ๋ต ํจํด์ผ๋ก ์ ํ (ReplaceType Code with State/Strategy) class Engineer extends EmployeeType { int getTypeCode () { return Employee.ENGINEER; } } class Manager extends EmployeeType { int getTypeCode () { return Employee.MANAGER; } } class Salesman extends EmployeeType { int getTypeCode () { return Employee.SALESMAN; } } class EmployeeType... static EmployeeType newType(int code) { switch (code) { case ENGINEER: return new Engineer(); case SALESMAN: return new Salesman(); case MANAGER: return new Manager(); default: throw .. } } static final int ENGINEER = 0; static final int SALESMAN = 1; static final int MANAGER = 2; } class Employee... int getType() { return _type.getTypeCode(); } void setType(int arg) { _type = EmployeeType.newType(arg); } int payAmount() { switch (getType()) { case EmployeeType.ENGINEER: return _monthlySalary; case EmployeeType.SALESMAN: return _monthlySalary + _commission; case EmployeeType.MANAGER: return _monthlySalary + _bonus; default: throw new RuntimeException("Incorrect Employee"); } }
10.
ํ์ํด๋์ค๋ฅผ ํ๋๋ก ์ ํ (Replace
Subclass with Fields) โข ๋จ์ํ ์์ ๋ฉ์๋๋ง ์กด์ฌํ๋ ํ์ํด๋์ค๋ ์์ํด๋์ค์ ํ๋๋ก ์ ํํ๊ณ , ํ์ํด๋์ค๋ ์์ ํ ์ญ์ ํ๋ฉด ๋๋ค . abstract class Person { abstract boolean isMale(); abstract char getCode(); ... } class Male extends Person { boolean isMale() { return true; } char getCode() { return 'M'; } } class Female extends Person { boolean isMale() { return false; } char getCode() { return 'F'; } } abstract class Person { private final boolean _isMale; private final char _code; static Person createMale(){ return new Person(true, 'M'); } static Person createFemale(){ return new Person(false, โF'); } ... }
Download