ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ธ ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ์์๋ฉ๋๋ค. ๋๋ถ๋ถ์ ์ด๋ณด ๊ฐ๋ฐ์๋ ์ด๊ฒ์ด ๋ฏธ๋์ ํ๋์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ์ด๋ ๋ถ๋ถ์ ์ผ๋ก ์ฌ์ค์ด์ง๋ง ํ๋ก๊ทธ๋๋จธ์ ์์
์๋ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ ๋ฐ ๋ฆฌํฉํ ๋ง๋ ํฌํจ๋ฉ๋๋ค. ์ค๋์ ๋ฆฌํฉํ ๋ง์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
JavaRush ๊ณผ์ ์ ๋ฆฌํฉํ ๋ง
JavaRush ๊ณผ์ ์์๋ ๋ฆฌํฉํ ๋ง ์ฃผ์ ๋ฅผ ๋ ๋ฒ ๋ค๋ฃน๋๋ค.- ๋ฉํฐ์ค๋ ๋ฉ ํ์คํธ ๋ ๋ฒจ 5์ ๋ํ ํฐ ๋์ ์ ๋๋ค .
- Java ์ปฌ๋ ์ ํ์คํธ ๋ ๋ฒจ 9์์ Intellij IDEA์ ๋ฆฌํฉํ ๋ง์ ๋ํ ๊ฐ์์ ๋๋ค .
๋ฆฌํฉํ ๋ง์ด๋ ๋ฌด์์ ๋๊น?
์ด๋ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ์ง ์๊ณ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ์ซ์๋ฅผ ๋น๊ตํ์ฌ ์ฒซ ๋ฒ์งธ ์ซ์๊ฐ ๋ ํฌ๋ฉด true๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํ๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค .public boolean max(int a, int b) {
if(a > b) {
return true;
} else if(a == b) {
return false;
} else {
return false;
}
}
๊ฒฐ๊ณผ๋ ๋งค์ฐ ๋ฒ๊ฑฐ๋ก์ด ์ฝ๋์์ต๋๋ค. ์ด๋ณด์๋ผ๋ ์ด๋ฐ ๊ธ์ ์ฐ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๋๋ฐ ์ด๋ฐ ์ํ์ด ์์ต๋๋ค. if-else
๋ฉ์๋๋ฅผ 6์ค ๋ ์งง๊ฒ ์์ฑํ ์ ์๋ค๋ฉด ์ ์ฌ๊ธฐ์ ๋ธ๋ก์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค .
public boolean max(int a, int b) {
return a>b;
}
์ด์ ์ด ๋ฐฉ๋ฒ์ ์์ ์์ ๋์ผํ ์์
์ ์ํํ์ง๋ง ๊ฐ๋จํ๊ณ ์ฐ์ํด ๋ณด์
๋๋ค. ์ด๊ฒ์ด ๋ฆฌํฉํ ๋ง์ด ์๋ํ๋ ๋ฐฉ์์
๋๋ค. ์ฝ๋์ ๋ณธ์ง์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ๋ฆฌํฉํ ๋ง ๋ฐฉ๋ฒ๊ณผ ๊ธฐ์ ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ์ด์ ๋ํด ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฆฌํฉํ ๋ง์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฝ๋์ ๋จ์์ฑ๊ณผ ๊ฐ๊ฒฐ์ฑ์ ์ถ๊ตฌํฉ๋๋ค. ์ด ์ด๋ก ์ ์ง์งํ๋ ์ฌ๋๋ค์ ๋น๋ก ์ฝ๋๋ฅผ ์ดํดํ๋ ค๋ฉด ์์ญ ์ค์ ์ฃผ์์ด ํ์ํ๋๋ผ๋ ์ฝ๋๋ ์ต๋ํ ๊ฐ๊ฒฐํด์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ ์ต์ํ์ ์ฃผ์์ผ๋ก ์ฝ๋๋ฅผ ์ดํดํ ์ ์๋๋ก ๋ฆฌํฉํฐ๋งํด์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ๊ฐ ํ์ ์์ ์ ์์น๋ฅผ โโ์ ํํ์ง๋ง ๋ฆฌํฉํ ๋ง์ ์ถ์๊ฐ ์๋๋ผ๋ ์ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค . ์ฃผ์ ๋ชฉํ๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ์ด ๊ธ๋ก๋ฒ ๋ชฉํ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ชฉํ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.- ๋ฆฌํฉํ ๋ง์ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋์ ๋ํ ์ดํด๋ฅผ ํฅ์์ํต๋๋ค.
- ์ค๋ฅ๋ฅผ ์ฐพ๊ณ ์์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
- ์ ๋ฐ์ ์ผ๋ก ์ํํธ์จ์ด ๊ตฌ์ฑ์ด ํฅ์๋ฉ๋๋ค.
โ์ฝ๋ ๋์โ
์ฝ๋์ ๋ฆฌํฉํ ๋ง์ด ํ์ํ ๋ ๊ทธ๋ค์ "๋์๊ฐ ๋๋ค"๊ณ ๋งํฉ๋๋ค. ๋ฌผ๋ก ๋ฌธ์ ๊ทธ๋๋ก ๊ทธ๋ฐ ๊ฒ์ ์๋์ง๋ง ์ด๋ฌํ ์ฝ๋๋ ์ค์ ๋ก๋ ๋ณ๋ก ์ข์ ๋ณด์ด์ง ์์ต๋๋ค. ์๋์์๋ ์ด๊ธฐ ๋จ๊ณ์ ์ฃผ์ ๋ฆฌํฉํ ๋ง ๊ธฐ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.๋ถํ์ํ๊ฒ ํฐ ์์
ํฌ๊ธฐ๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ผ๋ก ์ ํํ๊ฒ ์์ ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ์ฑ๊ฐ์ ํด๋์ค์ ๋ฉ์๋๊ฐ ์์ต๋๋ค.ํฐ ์์
์ด๋ฌํ ํด๋์ค์๋ ์์ฒญ๋ ์์ ์ฝ๋ ์ค๊ณผ ๋ค์ํ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ์๋ ์ ํด๋์ค๋ฅผ ๋ง๋๋ ๊ฒ๋ณด๋ค ๊ธฐ์กด ํด๋์ค์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ ์ฝ๊ธฐ ๋๋ฌธ์ ํด๋์ค๊ฐ ์ฑ์ฅํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ํด๋์ค์ ๊ธฐ๋ฅ์ ์ค๋ฒ๋ก๋๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ฅผ ๋ณ๋์ ํด๋์ค๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ๋์์ด ๋ฉ๋๋ค. ์ด์ ๋ํด์๋ ๋ฆฌํฉํ ๋ง ๊ธฐ์ ์น์ ์์ ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.ํฐ ๋ฐฉ๋ฒ
์ด "๋์"๋ ๊ฐ๋ฐ์๊ฐ ๋ฉ์๋์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ๋ฐ์ํฉ๋๋ค. โ์ฌ๊ธฐ์ ์ธ ์ ์๋๋ฐ ์ ๋งค๊ฐ๋ณ์ ๊ฒ์ฌ๋ฅผ ๋ณ๋์ ๋ฉ์๋์ ๋ฃ์ด์ผ ํ ๊น์?โ, โ๋ฐฐ์ด์์ ์ต๋ ์์๋ฅผ ์ฐพ๋ ๋ฉ์๋๋ฅผ ์ ๋ถ๋ฆฌํด์ผ ํ๋์ง, ์ฌ๊ธฐ์ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๊ฐ ๋ ๋ช ํํด์ง๋๋ค.โ ๋ฑ์ ์คํด๋ ์์ต๋๋ค. ๋๊ท๋ชจ ๋ฉ์๋๋ฅผ ๋ฆฌํฉํฐ๋งํ๋ ๋ฐ๋ ๋ ๊ฐ์ง ๊ท์น์ด ์์ต๋๋ค.- ๋ฉ์๋๋ฅผ ์์ฑํ ๋ ์ฝ๋์ ์ฃผ์์ ์ถ๊ฐํ๋ ค๋ฉด ์ด ๊ธฐ๋ฅ์ ๋ณ๋์ ๋ฉ์๋๋ก ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค.
- ๋ฉ์๋์ 10~15์ค ์ด์์ ์ฝ๋๊ฐ ํ์ํ ๊ฒฝ์ฐ ํด๋น ๋ฉ์๋๊ฐ ์ํํ๋ ์์ ๊ณผ ํ์ ์์ ์ ์๋ณํ๊ณ ํ์ ์์ ์ ๋ณ๋์ ๋ฉ์๋๋ก ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค.
- ๋ฉ์๋ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ฅผ ๋ณ๋์ ๋ฉ์๋๋ก ๋ถ๋ฆฌํฉ๋๋ค.
- ์ง์ญ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ฅผ ์ถ์ถํ ์ ์๋ ๊ฒฝ์ฐ ์ ์ฒด ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ๋ฉ์๋์ ์ ๋ฌํ ์ ์์ต๋๋ค.
๋ค์ํ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ํ ์ฌ์ฉ
์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฌธ์ ๋ ํด๋์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ๋ ์๊ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฆ๊ฐํ ๋ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ ๊ฐ์ฒด ๋์ ๊ธฐ๋ณธ ์ ํ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ(ํตํ, ๋ ์ง, ์ ํ๋ฒํธ ๋ฑ)๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ธ์ฝ๋ฉํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ์ข์ ๋ฐฉ๋ฒ์ ํ๋๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ทธ๋ฃนํํ๊ณ ๋ณ๋์ ํด๋์ค์ ๋ฐฐ์นํ๋ ๊ฒ์ ๋๋ค(ํด๋์ค ์ ํ). ํด๋์ค์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฉ์๋๋ฅผ ํฌํจํ ์๋ ์์ต๋๋ค.๊ธด ์ต์ ๋ชฉ๋ก
ํนํ ๋๊ท๋ชจ ๋ฐฉ๋ฒ๊ณผ ๊ฒฐํฉํ ๋ ์๋นํ ํํ ์ค์์ ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋์ ๊ธฐ๋ฅ์ด ์ค๋ฒ๋ก๋๋๊ฑฐ๋ ๋ฉ์๋๊ฐ ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฐํฉํ๋ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค. ๋งค๊ฐ๋ณ์์ ๊ธด ๋ชฉ๋ก์ ์ดํดํ๊ธฐ ๋งค์ฐ ์ด๋ ค์ฐ๋ฉฐ ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋ถํธํฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ฒด ๊ฐ์ฒด๋ฅผ ์ ์กํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฐ์ฒด์ ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ ๋ณด๋ค ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ฉ์๋์ ๊ธฐ๋ฅ์ ๋ถํ ํ์ฌ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.๋ฐ์ดํฐ ๊ทธ๋ฃน
๋ ผ๋ฆฌ์ ์ผ๋ก ๊ด๋ จ๋ ๋ฐ์ดํฐ ๊ทธ๋ฃน์ด ์ฝ๋์ ๋ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์(URL, ์ฌ์ฉ์ ์ด๋ฆ, ๋น๋ฐ๋ฒํธ, ์คํค๋ง ์ด๋ฆ ๋ฑ)์ ๋๋ค. ์์ ๋ชฉ๋ก์์ ๋จ์ผ ํ๋๋ฅผ ์ ๊ฑฐํ ์ ์๋ ๊ฒฝ์ฐ ๋ชฉ๋ก์ ๋ณ๋์ ํด๋์ค(ํด๋์ค ์ ํ)์ ๋ฐฐ์น๋์ด์ผ ํ๋ ๋ฐ์ดํฐ ๊ทธ๋ฃน์ ๋๋ค.OOP ๊ฐ๋ ์ ๋ง์น๋ ์๋ฃจ์
์ด๋ฌํ ์ ํ์ "๋์"๋ ๊ฐ๋ฐ์๊ฐ OOP ์ค๊ณ๋ฅผ ์๋ฐํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ ๊ทธ๊ฐ ์ด ํจ๋ฌ๋ค์์ ๊ธฐ๋ฅ์ ์์ ํ ์ดํดํ์ง ๋ชปํ๊ณ ์ด๋ฅผ ๋ถ์์ ํ๊ฑฐ๋ ๋ถ์ ํํ๊ฒ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํฉ๋๋ค.์์ ๊ฑฐ๋ถ
ํ์ ํด๋์ค๊ฐ ์์ ํด๋์ค์ ๊ธฐ๋ฅ ์ค ์ต์ํ์ ๋ถ๋ถ์ ์ฌ์ฉํ๋ฉด ์๋ชป๋ ๊ณ์ธต ๊ตฌ์กฐ์ ๋์๊ฐ ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ๊ฒฝ์ฐ ๋ถํ์ํ ๋ฉ์๋๋ ์ฌ์ ์๋์ง ์๊ฑฐ๋ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์์ ์์๋๋ค๋ฉด ์ด๋ ํด๋น ๊ธฐ๋ฅ์ ๊ฑฐ์ ์๋ฒฝํ๊ฒ ์ฌ์ฉํ๋ค๋ ์๋ฏธ์ ๋๋ค. ์ฌ๋ฐ๋ฅธ ๊ณ์ธต ๊ตฌ์กฐ์ ์: ์๋ชป๋ ๊ณ์ธต ๊ตฌ์กฐ์ ์:์ค์์น ๋ฌธ
์ด์์์๊ฒ ๋ฌด์จ ๋ฌธ์ ๊ฐ ์์ ์ ์๋์switch
? ๋์์ธ์ด ๋งค์ฐ ๋ณต์กํ๋ฉด ์ข์ง ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ง์ ์ค์ฒฉ ๋ธ๋ก๋ ํฌํจ๋ฉ๋๋ค if
.
๋ค์ํ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ถ ๋์ฒด ํด๋์ค
์ฌ๋ฌ ํด๋์ค๊ฐ ์ค์ ๋ก ๋์ผํ ์์ ์ ์ํํ์ง๋ง ํด๋น ๋ฉ์๋์ ์ด๋ฆ์ ๋ค๋ฆ ๋๋ค.์์ ํ๋
ํด๋์ค์ ๊ฐ์ฒด์ ๊ฐ๋์ฉ๋ง ํ์ํ ์์ ํ๋๊ฐ ํฌํจ๋์ด ์๊ณ ๊ฐ์ผ๋ก ์ฑ์์ง๊ณ ๋๋จธ์ง ์๊ฐ์ ๋น์ด ์๊ฑฐ๋ ๊ธ์ง๋์ด ์๋ ๊ฒฝ์ฐ ์ฝ๋์์ "null
๋์๊ฐ ๋๋ฉฐ" ๊ทธ๋ฌํ ๋์์ธ์ ๋ชจํธํฉ๋๋ค. ๊ฒฐ์ .
์์ ์ ์ด๋ ต๊ฒ ๋ง๋๋ ๋์
์ด๋ฌํ "๋์"๋ ๋ ์ฌ๊ฐํฉ๋๋ค. ๋๋จธ์ง๋ ์ฃผ๋ก ์ฝ๋ ์ดํด๋ฅผ ๋ฐฉํดํ์ง๋ง ์ฝ๋ ์์ ์ ๋ถ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด๋ค ๊ธฐ๋ฅ์ ๋์ ํ๋ฉด ๊ฐ๋ฐ์ ์ค ์ ๋ฐ์ ๊ทธ๋ง๋๊ณ ์ ๋ฐ์ ๋ฏธ์ณ๋ฒ๋ฆด ๊ฒ์ ๋๋ค.๋ณ๋ ฌ ์์ ๊ณ์ธต
ํด๋์ค์ ํ์ ํด๋์ค๋ฅผ ์์ฑํ ๋ ๋ค๋ฅธ ํด๋์ค์ ๋ ๋ค๋ฅธ ํ์ ํด๋์ค๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.๊ท ์ผํ ์ข ์์ฑ ๋ถํฌ
์์ ์ ์ํํ ๋ ์ด ํด๋์ค์ ๋ชจ๋ ์ข ์์ฑ(์ฌ์ฉ)์ ์ฐพ์ ์์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ง์ด ์ ์ฉํด์ผ ํฉ๋๋ค. ํ ๋ฒ์ ๋ณ๊ฒฝ - ์ฌ๋ฌ ์์ ์์ ์์ ๋ฉ๋๋ค.๋ณต์กํ ์์ ํธ๋ฆฌ
์ด ๋์๋ ์ด์ ๋์์ ๋ฐ๋์ ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ๋์ผํ ํด๋์ค์ ๋ง์ ๋ฉ์๋์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ฝ๋์ ์ข ์์ฑ์ ์ฐ์์ ์ ๋๋ค. ํ ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํ ํ ๋ค๋ฅธ ๋ฉ์๋์์ ์์ ํด์ผ ํ๊ณ ์ธ ๋ฒ์งธ ๋ฉ์๋์์ ์์ ํด์ผ ํ๋ ์์ ๋๋ค. ํ๋์ ์์ - ๋ง์ ๋ณํ.โ์ฐ๋ ๊ธฐ ๋์โ
๋ํต์ ์ ๋ฐํ๋ ๋ค์ ๋ถ์พํ ๋์ ์นดํ ๊ณ ๋ฆฌ์ ๋๋ค. ์ธ๋ชจ์๊ณ ๋ถํ์ํ๋ฉฐ ์ค๋๋ ์ฝ๋์ ๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ ์ต์ IDE์ ๋ฆฐํฐ๋ ์ด๋ฌํ ๋์์ ๋ํด ๊ฒฝ๊ณ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค.๋ฉ์๋์ ๋ง์ ๋๊ธ์ด ์์
์ด ๋ฉ์๋์๋ ๊ฑฐ์ ๋ชจ๋ ์ค์ ๋ง์ ์ค๋ช ์ฃผ์์ด ์์ต๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ฐ๊ด๋์ด ์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ฉ์๋๋ก ๋๋๊ณ ์๋ฏธ ์๋ ์ด๋ฆ์ ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.์ฝ๋ ๋ณต์
์๋ก ๋ค๋ฅธ ํด๋์ค๋ ๋ฉ์๋๋ ๋์ผํ ์ฝ๋ ๋ธ๋ก์ ์ฌ์ฉํฉ๋๋ค.๊ฒ์ผ๋ฅธ ์์
๋ง์ ๊ธฐ๋ฅ์ด ๊ณํ๋์์ง๋ง ์์ ์ ๊ฑฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.์ฌ์ฉ๋์ง ์์ ์ฝ๋
ํด๋์ค, ๋ฉ์๋ ๋๋ ๋ณ์๋ ์ฝ๋์์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ "์ฃฝ์ ๋ฌด๊ฒ"์ ๋๋ค.๊ณผ๋ํ ๊ฒฐํฉ
์ด ๋์ ๋ฒ์ฃผ๋ ์ฝ๋์ ๋ถํ์ํ ์ฐ๊ฒฐ์ด ๋ง๋ค๋ ํน์ง์ด ์์ต๋๋ค.ํ์ฌ ๋ฐฉ๋ฒ
๋ฉ์๋๋ ์์ฒด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ํจ์ฌ ๋ ์์ฃผ ์ฌ์ฉํฉ๋๋ค.๋ถ์ ์ ํ ์น๋ฐ๊ฐ
ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์๋น์ค ํ๋์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.๊ธด ์์ ํตํ
ํ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค๋ฅผ ํธ์ถํ์ฌ ์ธ ๋ฒ์งธ, ๋ค ๋ฒ์งธ ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํฉ๋๋ค. ์ด๋ ๊ฒ ๊ธด ํธ์ถ ์ฒด์ธ์ ํ์ฌ ํด๋์ค ๊ตฌ์กฐ์ ๋ํ ์์กด๋๊ฐ ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.ํด๋์ค ์์ ๋๋ฌ
ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์์ ์ ์ ๋ฌํ๋ ๋ฐ์๋ง ํ์ํฉ๋๋ค. ์ด์ฉ๋ฉด ์ ๊ฑฐํด์ผํ ๊น์?๋ฆฌํฉํ ๋ง ๊ธฐ๋ฒ
์๋์์๋ ์ค๋ช ๋ ์ฝ๋ ๋์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ด ๋๋ ์ด๊ธฐ ๋ฆฌํฉํ ๋ง ๊ธฐ์ ์ ๋ํด ์ค๋ช ํฉ๋๋ค.ํด๋์ค ์ ํ
ํด๋์ค๊ฐ ์ํํ๋ ๊ธฐ๋ฅ์ด ๋๋ฌด ๋ง์ ๊ทธ ์ค ์ผ๋ถ๋ฅผ ๋ค๋ฅธ ํด๋์ค๋ก ์ด๋ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฑฐ์ฃผ์ง ์ฃผ์๋ ํฌํจํ๋ ํด๋์คHuman
์ ์ ์ฒด ์ฃผ์๋ฅผ ์ ๊ณตํ๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค.
class Human {
private String name;
private String age;
private String country;
private String city;
private String street;
private String house;
private String quarter;
public String getFullAddress() {
StringBuilder result = new StringBuilder();
return result
.append(country)
.append(", ")
.append(city)
.append(", ")
.append(street)
.append(", ")
.append(house)
.append(" ")
.append(quarter).toString();
}
}
์ฃผ์ ์ ๋ณด์ ๋ฐฉ๋ฒ(๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋์)์ ๋ณ๋์ ํด๋์ค์ ๋ฐฐ์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
class Human {
private String name;
private String age;
private Address address;
private String getFullAddress() {
return address.getFullAddress();
}
}
class Address {
private String country;
private String city;
private String street;
private String house;
private String quarter;
public String getFullAddress() {
StringBuilder result = new StringBuilder();
return result
.append(country)
.append(", ")
.append(city)
.append(", ")
.append(street)
.append(", ")
.append(house)
.append(" ")
.append(quarter).toString();
}
}
๋ฐฉ๋ฒ ์ ํ
๊ธฐ๋ฅ์ ํ๋์ ๋ฉ์๋๋ก ๊ทธ๋ฃนํํ ์ ์๋ ๊ฒฝ์ฐ ๋ณ๋์ ๋ฉ์๋์ ๋ฐฐ์นํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด์ฐจ ๋ฐฉ์ ์์ ๊ทผ์ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.public void calcQuadraticEq(double a, double b, double c) {
double D = b * b - 4 * a * c;
if (D > 0) {
double x1, x2;
x1 = (-b - Math.sqrt(D)) / (2 * a);
x2 = (-b + Math.sqrt(D)) / (2 * a);
System.out.println("x1 = " + x1 + ", x2 = " + x2);
}
else if (D == 0) {
double x;
x = -b / (2 * a);
System.out.println("x = " + x);
}
else {
System.out.println("Equation has no roots");
}
}
๊ฐ๋ฅํ ์ธ ๊ฐ์ง ์ต์
๋ชจ๋์ ๊ณ์ฐ์ ๋ณ๋์ ๋ฐฉ๋ฒ์ผ๋ก ์ฎ๊ฒจ ๋ณด๊ฒ ์ต๋๋ค.
public void calcQuadraticEq(double a, double b, double c) {
double D = b * b - 4 * a * c;
if (D > 0) {
dGreaterThanZero(a, b, D);
}
else if (D == 0) {
dEqualsZero(a, b);
}
else {
dLessThanZero();
}
}
public void dGreaterThanZero(double a, double b, double D) {
double x1, x2;
x1 = (-b - Math.sqrt(D)) / (2 * a);
x2 = (-b + Math.sqrt(D)) / (2 * a);
System.out.println("x1 = " + x1 + ", x2 = " + x2);
}
public void dEqualsZero(double a, double b) {
double x;
x = -b / (2 * a);
System.out.println("x = " + x);
}
public void dLessThanZero() {
System.out.println("Equation has no roots");
}
๊ฐ ๋ฉ์๋์ ์ฝ๋๋ ํจ์ฌ ๋ ์งง๊ณ ๋ช
ํํด์ก์ต๋๋ค.
์ ์ฒด ๊ฐ์ฒด ์ ์ก
๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.public void employeeMethod(Employee employee) {
// ะะตะบะพัะพััะต ะดะตะนััะฒะธั
double yearlySalary = employee.getYearlySalary();
double awards = employee.getAwards();
double monthlySalary = getMonthlySalary(yearlySalary, awards);
// ะัะพะดะพะปะถะตะฝะธะต ะพะฑัะฐะฑะพัะบะธ
}
public double getMonthlySalary(double yearlySalary, double awards) {
return (yearlySalary + awards)/12;
}
์ด ๋ฐฉ๋ฒ์์๋ employeeMethod
๊ฐ์ ์ป๊ณ ์ด๋ฅผ ๊ธฐ๋ณธ ๋ณ์์ ์ ์ฅํ๊ธฐ ์ํด ์ต๋ 2์ค์ด ํ ๋น๋ฉ๋๋ค. ๋๋ก๋ ์ด๋ฌํ ๋์์ธ์ ์ต๋ 10์ค์ด ์์๋๊ธฐ๋ ํฉ๋๋ค. ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๋ ๋ฉ์๋์ ๊ฐ์ฒด ์์ฒด๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค.
public void employeeMethod(Employee employee) {
// ะะตะบะพัะพััะต ะดะตะนััะฒะธั
double monthlySalary = getMonthlySalary(employee);
// ะัะพะดะพะปะถะตะฝะธะต ะพะฑัะฐะฑะพัะบะธ
}
public double getMonthlySalary(Employee employee) {
return (employee.getYearlySalary() + employee.getAwards())/12;
}
๊ฐ๋จํ๊ณ ์งง๊ณ ๊ฐ๊ฒฐํฉ๋๋ค.
ํ๋๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ทธ๋ฃนํํ๊ณ ๋ณ๋์ ํด๋์ค์ ๋ฐฐ์น
์์ ์๋ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ด๋ฅผ ๋ณผ ๋ ๋ง์ ๊ฐ๋ฐ์๊ฐ "์ค์ ๋ก ์ด ์์ ์ ์ํํ๋ ์ฌ๋์ ๋๊ตฌ์ ๋๊น?"๋ผ๋ ์ง๋ฌธ์ ํ ์ ์์์๋ ๋ถ๊ตฌํ๊ณ ๋ง์ ๊ฐ๋ฐ์๋ ๋ถ์ฃผ์, ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ๋ํ ์์ง ๋๋ ๋จ์ํ "ํ ๊ฒ์ ๋๋ค"๋ก ์ธํด ๋น์ทํ ๊ตฌ์กฐ์ ์ค๋ฅ.๋ฆฌํฉํ ๋ง์ด ํจ๊ณผ์ ์ธ ์ด์
์ข์ ๋ฆฌํฉํ ๋ง์ ๊ฒฐ๊ณผ๋ ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ฝ๊ณ , ํ๋ก๊ทธ๋จ ๋ก์ง์ ์์ ์ด ์ํ์ด ๋์ง ์์ผ๋ฉฐ, ์๋ก์ด ๊ธฐ๋ฅ์ ๋์ ์ด ์ฝ๋ ํ์ฑ ์ง์ฅ์ผ๋ก ๋ฐ๋์ง ์๊ณ ๋ฉฐ์น ๋์ ์ฆ๊ฑฐ์ด ํ๋์ ํ ์ ์๋ ํ๋ก๊ทธ๋จ์ ๋๋ค. . ํ๋ก๊ทธ๋จ์ ์ฒ์๋ถํฐ ๋ค์ ์์ฑํ๋ ๊ฒ์ด ๋ ์ฝ๋ค๋ฉด ๋ฆฌํฉํ ๋ง์ ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์์๋ ๋์ผํ ๊ธฐ๋ฅ์ ์ฒ์๋ถํฐ ๊ตฌํํ๋ ๊ฒ๋ณด๋ค ์ฝ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์, ๋ถ์ ๋ฐ ๋ฆฌํฉํ ๋งํ๋ ๋ฐ ๋๋ ์ธ๊ฑด๋น๊ฐ ๋ ๋์ ๊ฒ์ผ๋ก ์ถ์ ํฉ๋๋ค. ๋๋ ๋ฆฌํฉํ ๋ง์ด ํ์ํ ์ฝ๋์๋ ๋๋ฒ๊น ํ๊ธฐ ์ด๋ ค์ด ์ค๋ฅ๊ฐ ๋ง์ด ์์ต๋๋ค. ํ๋ก๊ทธ๋๋จธ์ ์์ ์์๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์ด ํ์์ ๋๋ค. ์ฐ์ต์ ์ค์ ์ ๋ ์จ๋ผ์ธ ์ฝ์ค์ธ JavaRush์์ Java ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ์ฆ๊ฐ์ ์ธ ๊ฒ์ฆ์ด ๊ฐ๋ฅํ 1200๊ฐ ์ด์์ ์์ , ์ฝ 20๊ฐ์ ๋ฏธ๋ ํ๋ก์ ํธ, ๊ฒ์ ์์ - ์ด ๋ชจ๋ ๊ฒ์ด ์ฝ๋ฉ์ ์์ ๊ฐ์ ๊ฐ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ง๊ธ์ด ์์ํ๊ธฐ์ ๊ฐ์ฅ ์ข์ ์๊ธฐ์ ๋๋ค :)๋ฆฌํฉํ ๋ง์ ๋ํ ์ถ๊ฐ ์ฐ๊ตฌ๋ฅผ ์ํ ๋ฆฌ์์ค
๋ฆฌํฉํ ๋ง์ ๊ดํ ๊ฐ์ฅ ์ ๋ช ํ ์ฑ ์ ใ๋ฆฌํฉํ ๋งใ์ด๋ค. ๊ธฐ์กด ์ฝ๋์ ๋์์ธ ๊ฐ์ โ(Martin Fowler ์ ). Joshua Kiriewski๊ฐ ์ด ์ด์ ์ฑ ์ธ "Refactoring with Patterns"๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ๋ฆฌํฉํ ๋ง์ ๊ดํ ํฅ๋ฏธ๋ก์ด ์ถํ๋ฌผ๋ ์์ต๋๋ค. ํ ํ๋ฆฟ์ ๋ํด ๋งํ๋ฉด. ๋ฆฌํฉํ ๋งํ ๋ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ธ ํจํด์ ์๋ ๊ฒ์ ํญ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๋ค์์ ํ๋ฅญํ ์ฑ ๋ค์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค:- "๋์์ธ ํจํด" - Head First ์๋ฆฌ์ฆ์ Eric Freeman, Elizabeth Freeman, Kathy Sierra, Bert Bates ์ ์;
- "์ฝ๊ธฐ ์ฌ์ด ์ฝ๋ ๋๋ ์์ ๋ก์์ ํ๋ก๊ทธ๋๋ฐ" - Dustin Boswell, Trevor Faucher.
- ์๋ฆ๋ต๊ณ ์ฐ์ํ ์ฝ๋์ ์์น์ ์ค๋ช ํ๋ Steve McConnell์ "Perfect Code".
GO TO FULL VERSION