11์ฅ. ์์คํ ๐ก
- Main ๋ถ๋ฆฌ
์์คํ ์์ฑ๊ณผ ์์คํ ์ฌ์ฉ์ ๋ถ๋ฆฌํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก, ์์ฑ๊ณผ ๊ด๋ จํ ์ฝ๋๋ ๋ชจ๋ main์ด๋ main์ด ํธ์ถํ๋ ๋ชจ๋๋ก ์ฎ๊ธฐ๊ณ , ๋๋จธ์ง ์์คํ ์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋์๊ณ ๋ชจ๋ ์์กด์ฑ์ด ์ฐ๊ฒฐ๋์๋ค๊ณ ๊ฐ์ ํ๋ค.
์ ์ด ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ฝ๋ค. main ํจ์์์ ์์คํ ์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ์ด๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๊ธด๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ฟ์ด๋ค. main๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ด์ ํ์๋ ์์กด์ฑ ํ์ดํ์ ๋ฐฉํฅ์ ์ฃผ๋ชฉํ๋ค. ๋ชจ๋ ํ์ดํ๊ฐ main ์ชฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ชฝ์ ํฅํ๋ค. ์ฆ, ์ ํ๋ฆฌ์ผ์ด์ ์ main์ด๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ๊ณผ์ ์ ์ ํ ๋ชจ๋ฅธ๋ค๋ ๋ป์ด๋ค. ๋จ์ง ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์ ์ ํ ์์ฑ๋์๋ค๊ณ ๊ฐ์ ํ๋ค.
11์ฅ ๊ฒฐ๋ก
์์คํ ์ญ์ ๊นจ๋ํด์ผ ํ๋ค. ๊นจ๋ํ์ง ๋ชปํ ์ํคํ ์ฒ๋ ๋๋ฉ์ธ ๋ ผ๋ฆฌ๋ฅผ ํ๋ฆฌ๋ฉฐ ๊ธฐ๋ฏผ์ฑ์ ๋จ์ด๋จ๋ฆฐ๋ค. ๋๋ฉ์ธ ๋ ผ๋ฆฌ๊ฐ ํ๋ ค์ง๋ฉด ์ ํ ํ์ง์ด ๋จ์ด์ง๋ค. ๋ฒ๊ทธ๊ฐ ์จ์ด๋ค๊ธฐ ์ฌ์์ง๊ณ , ์คํ ๋ฆฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ด๋ ค์์ง๋ ํ์ด๋ค. ๊ธฐ๋ฏผ์ฑ์ด ๋จ์ด์ง๋ฉด ์์ฐ์ฑ์ด ๋ฎ์์ ธ TDD๊ฐ ์ ๊ณตํ๋ ์ฅ์ ์ด ์ฌ๋ผ์ง๋ค.
๋ชจ๋ ์ถ์ํ ๋จ๊ณ์์ ์๋๋ ๋ช ํํ ํํํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ ค๋ฉด POJO๋ฅผ ์์ฑํ๊ณ ๊ด์ ํน์ ๊ด์ ๊ณผ ์ ์ฌํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํด ๊ฐ ๊ตฌํ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํด์ผ ํ๋ค.
์์คํ ์ ์ค๊ณํ๋ ๊ฐ๋ณ ๋ชจ๋์ ์ค๊ณํ๋ , ์ค์ ๋ก ๋์๊ฐ๋ ๊ฐ์ฅ ๋จ์ํ ์๋จ์ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ฌ์ค์ ๋ช ์ฌํ์.
(ํด๋น ์ฅ์์๋ ์์คํ ๊ณผ ๊ด๋ จ๋ DI, IoC, Proxy, POJO ๋ฑ์ ๊ดํ ๋ด์ฉ์ด ๋ง์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์๊ณ ์ถ์ผ์๋ค๋ฉด ๊ผญ 11์ฅ์ ์ฝ์ด๋ณด์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.)
12์ฅ. ์ฐฝ๋ฐ์ฑ ๐
์ผํธ ๋ฒก์ด ์ ์ํ ๋จ์ํ ์ค๊ณ ๊ท์น ๋ค ๊ฐ์ง๋ฅผ ์ด์ฉํ์ฌ ์ฐ์ํ ์ค๊ณ์ ์ฐฝ๋ฐ์ฑ์ ์ด์งํ์ฌ ๋ณด์. (์ค์๋๊ฐ ๋์ ๊ฒ๋ค์ ๋จผ์ ์๊ฐํ๋ ๋ฐฉ์์ผ๋ก ๊ธ์ ์ ๊ฒ ๋ค.)
๋จ์ํ ์ค๊ณ ๊ท์น 1 : ๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ๋ผ
ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ์์คํ ์ ๋ง๋ค๋ ค๊ณ ์ ์ฐ๋ฉด ์ค๊ณ ํ์ง์ด ๋๋ถ์ด ์ข์์ง๋ค. ํฌ๊ธฐ๊ฐ ์๊ณ ๋ชฉ์ ํ๋๋ง ์ํํ๋ ํด๋์ค๊ฐ ๋์จ๋ค. SRP๋ฅผ ์ค์ํ๋ ํด๋์ค๋ ํ ์คํธ๊ฐ ํจ์ฌ ๋ ์ฝ๋ค. ํ ์คํธ ์ผ์ด์ค๊ฐ ๋ง์์๋ก ๊ฐ๋ฐ์๋ ํ ์คํธ๊ฐ ์ฝ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ๋ฐ๋ผ์ ์ฒ ์ ํ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ์์คํ ์ ๋ง๋ค๋ฉด ๋ ๋์ ์ค๊ณ๊ฐ ์ป์ด์ง๋ค.
"ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋ค๊ณ ๊ณ์ ๋๋ ค๋ผ"๋ผ๋ ๊ฐ๋จํ๊ณ ๋จ์ํ ๊ท์น์ ๋ฐ๋ฅด๋ฉด ์์คํ ์ ๋ฎ์ ๊ฒฐํฉ๋์ ๋์ ์์ง๋ ฅ์ด๋ผ๋, ๊ฐ์ฒด ์งํฅ ๋ฐฉ๋ฒ๋ก ์ด ์งํฅํ๋ ๋ชฉํ๋ฅผ ์ ์ ๋ก ๋ฌ์ฑํ๋ค. ์ฆ, ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ฉด ์ค๊ณ ํ์ง์ด ๋์์ง๋ค.
๋จ์ํ ์ค๊ณ ๊ท์น 2 : ์ค๋ณต์ ์์ ๋ผ (๋ฆฌํฉํ ๋ง)
์ฐ์ํ ์ค๊ณ์์ ์ค๋ณต์ ์ปค๋ค๋ ์ ์ด๋ค. ์ค๋ณต์ ์ถ๊ฐ ์์ , ์ถ๊ฐ ์ํ, ๋ถํ์ํ ๋ณต์ก๋๋ฅผ ๋ปํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋๊ฐ์ ์ฝ๋๋ ๋น์ฐํ ์ค๋ณต์ ํ ํํ์ด๊ณ ๊ตฌํ ์ค๋ณต๋ ์ค๋ณต์ ํ ํํ์ด๋ค.
์๋๋ ๊ตฌํ ์ค๋ณต์ ํ ํํ์ ๊ตฌํ ์ค๋ณต์ ์ ๊ฑฐํ ํํ๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค.
// ๊ตฌํ ์ค๋ณต
int size() {} // ๋ฉ์๋ ๊ฐ์๋ฅผ ๋ฐํ
boolean isEmpty() {}
------------------------------------
// ๊ตฌํ ์ค๋ณต ํด๊ฒฐ
boolean isEmpty() {
return 0 == size();
}
๋จ์ํ ์ค๊ณ ๊ท์น 3 : ํ๋ก๊ทธ๋๋จธ์ ์๋๋ฅผ ํํํ๋ผ (๋ฆฌํฉํ ๋ง)
์ํํธ์จ์ด ํ๋ก์ ํธ ๋น์ฉ ์ค ๋๋ค์๋ ์ฅ๊ธฐ์ ์ธ ์ ์ง๋ณด์์ ๋ค์ด๊ฐ๋ค. ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด์ ๋ฒ๊ทธ์ ์น์ ์ฌ์ง ์์ผ๋ ค๋ฉด ์ ์ง๋ณด์ ๊ฐ๋ฐ์๊ฐ ์์คํ ์ ์ ๋๋ก ์ดํดํด์ผ ํ๋ค. ํ์ง๋ง ์์คํ ์ด ์ ์ฐจ ๋ณต์กํด์ง๋ฉด์ ์ ์ง๋ณด์ ๊ฐ๋ฐ์๊ฐ ์์คํ ์ ์ดํดํ๋๋ผ ๋ณด๋ด๋ ์๊ฐ์ ์ ์ ๋์ด๋๊ณ ๋์์ ์ฝ๋๋ฅผ ์คํดํ ๊ฐ๋ฅ์ฑ๋ ์ ์ ์ปค์ง๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฝ๋๋ ๊ฐ๋ฐ์์ ์๋๋ฅผ ๋ถ๋ช ํ ํํํด์ผ ํ๋ค. ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ๋ช ๋ฐฑํ๊ฒ ์งค์๋ก ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ฌ์์ง๋ค. ๊ทธ๋์ผ ๊ฒฐํจ์ด ์ค์ด๋ค๊ณ ์ ์ง๋ณด์ ๋น์ฉ์ด ์ ๊ฒ ๋ ๋ค. ์๋๋ ์ด๋ฅผ ์ํ 4๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
- ์ข์ ์ด๋ฆ์ ์ ํํ๋ค.
- ํจ์์ ํด๋์ค ํฌ๊ธฐ๋ฅผ ๊ฐ๋ฅํ ์ค์ธ๋ค
- ํ์ค ๋ช ์นญ์ ์ฌ์ฉํ๋ค
- ๋จ์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๊ผผ๊ผผํ ์์ฑํ๋ค.
๋จ์ํ ์ค๊ณ ๊ท์น 4 : ํด๋์ค์ ๋ฉ์๋ ์๋ฅผ ์ต์๋ก ์ค์ฌ๋ผ (๋ฆฌํฉํ ๋ง)
์ค๋ณต์ ์ ๊ฑฐํ๊ณ , ์๋๋ฅผ ํํํ๊ณ , SRP๋ฅผ ์ค์ํ๋ค๋ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๋ ๊ทน๋จ์ผ๋ก ์น๋ฌ์ผ๋ฉด ๋ ๋ณด๋ค ์ค์ด ๋ง์์ง๋ค. ํด๋์ค์ ๋ฉ์๋ ํฌ๊ธฐ๋ฅผ ์ค์ด์๊ณ ์กฐ๊ทธ๋ง ํด๋์ค์ ๋ฉ์๋๋ฅผ ์์์ด ๋ง๋๋ ์ฌ๋ก๋ ์์ง ์๋ค. ๊ทธ๋์ ์ด ๊ท์น์ ํจ์์ ํด๋์ค ์๋ฅผ ๊ฐ๋ฅํ ์ค์ด๋ผ๊ณ ์ ์ํ๋ค.
๋ชฉํ๋ ํจ์์ ํด๋์ค ํฌ๊ธฐ๋ฅผ ์๊ฒ ์ ์งํ๋ฉด์ ๋์์ ์์คํ ํฌ๊ธฐ๋ ์๊ฒ ์ ์งํ๋ ๋ฐ ์๋ค. ํ์ง๋ง ์ด ๊ท์น์ ๊ฐ๋จํ ์ค๊ณ ๊ท์น ๋ค ๊ฐ ์ค ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋ฎ๋ค. ๋ค์ ๋งํด, ํด๋์ค์ ํจ์ ์๋ฅผ ์ค์ด๋ ์์ ๋ ์ค์ํ์ง๋ง, ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋ค๊ณ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์๋๋ฅผ ํํํ๋ ์์ ์ด ๋ ์ค์ํ๋ค๋ ๋ป์ด๋ค.
'๐ ๊ฐ๋ฐ ์์ > ํด๋ฆฐ ์ฝ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํด๋ฆฐ ์ฝ๋(Clean Code) - 14์ฅ, 15์ฅ, 16์ฅ, 17์ฅ (0) | 2023.01.14 |
---|---|
ํด๋ฆฐ ์ฝ๋(Clean Code) - 13์ฅ (2) | 2023.01.12 |
ํด๋ฆฐ ์ฝ๋(Clean Code) - 10์ฅ (0) | 2023.01.11 |
ํด๋ฆฐ ์ฝ๋(Clean Code) - 8์ฅ, 9์ฅ (0) | 2023.01.10 |
ํด๋ฆฐ ์ฝ๋(Clean Code) - 7์ฅ (0) | 2023.01.10 |