๐ ๋ชฉ์ฐจ.
10. ์ฑํฐ
.ํด๋์ค ์ฒด๊ณ
.์บก์ํ
.ํด๋์ค๋ ์์์ผ ํ๋ค!.
.๋จ์ผ ์ฑ ์ ์์น
.์์ง๋
.๋ณ๊ฒฝ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌ
โ๏ธ ๋ด์ฉ.
10. ํด๋์ค
๊นจ๋ํ ํด๋์ค๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ
.ํด๋์ค ์ฒด๊ณ
ํด๋์ค๋ฅผ ์ ์ํ๋ ํ์ค ์๋ฐ ๊ด๋ก
- ๋ณ์ ๋ชฉ๋ก
- static public ๋ณ์
- static private ๋ณ์
- private ๋ณ์
- private ์ธ์คํด์ค ๋ณ์
- ๊ณต๊ฐ ๋ณ์
- ๊ณต๊ฐ ํจ์
- ๋น๊ณต๊ฐ ํจ์๋ ์์ ์ ํธ์ถํ๋ ๊ณต๊ฐ ํจ์ ์งํ์ ๋ฃ๋๋ค (์ธ๋ก๊ฑฐ๋ฆฌ)
.์บก์ํ
๋ณ์์ ์ ํธ ํจ์๋ ๊ฐ๋ฅํ ๊ณต๊ฐํ์ง ์๋ ํธ์ด ๋ซ์ง๋ง ๋ฐ๋์ ์จ๊ฒจ์ผ ํ๋ค๋ ๋ฒ์น๋ ์๋ค.
๋๋ก๋ ๋ณ์๋ ์ ํธ ํจ์๋ฅผ protected๋ก ์ ์ธํด ํ ์คํธ ์ฝ๋์ ์ ๊ทผ์ ํ์ฉํ๊ธฐ๋ ํ๋ค. ๊ฐ์ ํจํค์ง ์์์ ํ ์คํธ ์ฝ๋๊ฐ ํจ์๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด ๊ทธ ํจ์๋ ๋ณ์๋ฅผ protected๋ก ์ ์ธํ๊ฑฐ๋ ํจํค์ง ์ ์ฒด๋ก ๊ณต๊ฐํ๋ค.
ํ์ง๋ง ๋น๊ณต๊ฐ ์ํ๋ฅผ ์ ์งํ ๋ฐฉ๋ฒ์ ์ฐพ๋๊ฒ ์ฐ์ ์ด๋ค. ์บก์ํ๋ฅผ ํ์ด์ฃผ๋ ๊ฒฐ์ ์ ์ธ์ ๋ ์ตํ์ ์๋จ์ด๋ค.
.ํด๋์ค๋ ์์์ผ ํ๋ค!.
ํด๋์ค๋ฅผ ์ค๊ณํ ๋๋, ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก '์๊ฒ'๊ฐ ๊ธฐ๋ณธ ๊ท์น์ด๋ค.
ํจ์๋ ๋ฌผ๋ฆฌ์ ์ธ ํ ์๋ก ํฌ๊ธฐ๋ฅผ ์ธก์ ํ๋ค. ํด๋์ค๋ ๋งก์ ์ฑ ์์ ์ผ๋ค. ์ต๋ํ ์ฑ ์์ ์ค์ด์
.๋จ์ผ ์ฑ ์ ์์น
๋จ์ผ ์ฑ ์ ์์น (Single Responseibillity Principle, SRP)์ ํด๋์ค๋ ๋ชจ๋์ ๋ณ๊ฒฝํ ์ด์ ๊ฐ ํ๋, ๋จ ํ๋๋ฟ์ด์ฌ์ผ ํ๋ค๋ ์์น์ด๋ค. SRP๋ '์ฑ ์'์ด๋ผ๋ ๊ฐ๋ ์ ์ ์ํ๋ฉฐ ์ ์ ํ ํด๋์ค ํฌ๊ธฐ๋ฅผ ์ ์ํ๋ค. ํด๋์ค๋ ์ฑ ์, ์ฆ ๋ณ๊ฒฝํ ์ด์ ๊ฐ ํ๋์ฌ์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค.
ํฐ ํด๋์ค ๋ช ๊ฐ๊ฐ ์๋๋ผ ์์ ํด๋์ค ์ฌ๋ฟ์ผ๋ก ์ด๋ค์ง ์์คํ ์ด ๋ ๋ฐ๋์งํ๋ค
๋ง์ ๊ฐ๋ฐ์๋ค์ ์์ํ ๋จ์ผ ์ฑ ์ ํด๋์ค๊ฐ ๋ง์์ง๋ฉด ํฐ ๊ทธ๋ฆผ์ ์ดํดํ๊ธฐ ์ด๋ ค์์ง๋ค๊ณ ์ฐ๋ คํ๋ค. ํฐ ๊ทธ๋ฆผ์ ์ดํดํ๊ธฐ ์ํด ํด๋์ค๊ฐ ์ ์์ด ๋๋๋ค์ด์ผ ํ๋ค๊ณ ๊ฑฑ์ ํ๋ค.
ํ์ง๋ง ์์ ํด๋์ค๊ฐ ๋ง์ ์์คํ ์ด๋ ํฐ ํด๋์ค๊ฐ ๋ช ๊ฐ ๋ฟ์ธ ์์คํ ์ด๋ ๋์๊ฐ๋ ๋ถํ์ ๊ทธ ์๊ฐ ๋น์ทํ๋ค. ์ด๋ ์์คํ ์ด๋ ์ตํ ๋ด์ฉ์ ๊ทธ์์ด ๋น์ทํ๋ค. ๊ท๋ชจ๊ฐ ์ด๋ ์์ค์ ์ด๋ฅด๋ ์์คํ ์ ๋ ผ๋ฆฌ๊ฐ ๋ง๊ณ ๋ณต์กํ๋ค. ์ด๋ฐ ๋ณต์ก์ฑ์ ๋ค๋ฃจ๊ธฐ ์ํด์๋ ์ฒด๊ณ์ ์ธ ์ ๋ฆฌ๊ฐ ํ์์ด๋ค. ๊ทธ๋์ผ ๊ฐ๋ฐ์๊ฐ ๋ฌด์์ด ์ด๋์ ์๋์ง ์ฝ๊ฒ ์ฐพ๋๋ค. ๊ทธ๋์ผ ๋ณ๊ฒฝ์ด ํ์ํ ๋ ์ง์ ์ํฅ์ด ๋ฏธ์น๋ ์ปดํฌ๋ํธ๋ง ์ดํดํด๋ ์ถฉ๋ถํ๋ค. ํฐ ํด๋์ค๊ฐ ๋ช ๊ฐ ๋ฟ์ธ ์์คํ ์ ๋ณ๊ฒฝ์ด ํ์ํ ๋ ๋น์ฅ ์ ํ์๊ฐ ์๋ ์ฌ์ค๊น์ง ๋ค์ด๋ฐ์ด ๋ ์๋ฅผ ๋ฐฉํดํ๋ค.
.์์ง๋
ํด๋์ค๋ ์ธ์คํด์ค ๋ณ์ ์๊ฐ ์์์ผ ํ๋ค. ๊ฐ ํด๋์ค ๋ฉ์๋๋ ํด๋์ค ์ธ์คํด์ค ๋ณ์๋ฅผ ํ๋ ์ด์ ์ฌ์ฉํด์ผ ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋๊ฐ ๋ณ์๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ ์๋ก ๋ฉ์๋์ ํด๋์ค๋ ์์ง๋ ๋์์ง๋ค. ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ๋ฉ์๋๋ง๋ค ์ฌ์ฉํ๋ ํด๋์ค๋ ์์ง๋๊ฐ ๊ฐ์ฅ ๋๋ค
์ผ๋ฐ์ ์ผ๋ก ์์ง๋๊ฐ ๊ฐ์ฅ ๋์ ํด๋์ค๋ ๊ฐ๋ฅํ์ง๋ ๋ฐ๋์งํ์ง๋ ์๋ค. ๊ทธ๋ ์ง๋ง ์ฐ๋ฆฌ๋ ์์ง๋๊ฐ ๋์ ํด๋์ค๋ฅผ ์ ํธํ๋ค. ์์ง๋๊ฐ ๋๋ค๋ ๋ง์ ํด๋์ค์ ์ํ ๋ฉ์๋์ ๋ณ์๊ฐ ์๋ก ์์กดํ๋ฉฐ ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋ฌถ์ธ๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
'ํจ์๋ฅผ ์๊ฒ, ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ์งง๊ฒ'๋ผ๋ ์ ๋ต์ ๋ฐ๋ฅด๋ค ๋ณด๋ฉด ๋๋๋ก ๋ช๋ช ๋ฉ์๋๋ง์ด ์ฌ์ฉํ๋ ์ธ์คํด์ค ๋ณ์๊ฐ ์์ฃผ ๋ง์์ง๋ค. ์ด๋ ์๋ก์ด ํด๋์ค๋ก ์ชผ๊ฐ์ผ ํ๋ค๋ ์ ํธ์ด๋ค. ์์ง๋๊ฐ ๋์์ง๋๋ก ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ ํ ๋ถ๋ฆฌํด ์๋ก์ด ํด๋์ค๋ก ์ชผ๊ฐ ์ค๋ค.
.๋ณ๊ฒฝ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌ
์๊ตฌ์ฌํญ์ ๋ณํ๊ธฐ ๋ง๋ จ์ด๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ ๋ณํ๊ธฐ ๋ง๋ จ์ด๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ฐ๋ฆฌ๋ ๊ตฌ์ฒด์ ์ธ ํด๋์ค์ ์ถ์ ํด๋์ค๊ฐ ์๋ค ์๊ณ ์๋ค. ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ ์์ธํ ๊ตฌํ(์ฝ๋ค)์ ํฌํจํ๋ฉฐ ์ถ์ ํด๋์ค๋ ๊ฐ๋ ๋ง ํฌํจํ๋ค๊ณ ๋ ๋ฐฐ์ ๋ค.
์์ธํ ๊ตฌํ์ ์์กดํ๋ ์ฝ๋๋ ํ ์คํธ๊ฐ ์ด๋ ต๋ค. ์์๋ก ๊ฐ์ด ๋ณ๋๋๋ ์ธ๋ถ API์ ์์กดํ๋ฉฐ ํ ์คํธ ์ฝ๋๋ฅผ ์ง๊ธฐ๋ ์ฝ์ง ์๋ค. ๋ฐ๋ผ์ ์ธ๋ถ API๋ฅผ ํ๋ด๋ด๋ ํ ์คํธ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ณ ์ ๊ฐ์ ๋ฐํํ๊ฒ๋ ํ์ฌ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์์ ๊ฐ์ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ์ ๋๋ก ์์คํ ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ฉด ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค. ๊ฒฐํฉ๋๊ฐ ๋ฎ๋ค๋ ์๋ฏธ๋ ๊ฐ ์์คํ ์์๊ฐ ๋ค๋ฅธ ์์๋ก๋ถํฐ ๊ฒฉ๋ฆฌ๊ฐ ์ ๋์ด์๋ค๋ ์๋ฏธ์ด๋ค.
์ด๋ ๊ฒ ๊ฒฐํฉ๋๋ฅผ ์ต์๋ก ์ค์ด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ ๋ค๋ฅธ ํด๋์ค ์ค๊ณ ์์น์ธ DIP(์์กด ์ญ์ )๋ฅผ ๋ฐ๋ฅด๋ ํด๋์ค๊ฐ ๋์จ๋ค.
DIP๋ ์์ธํ ๊ตฌํ์ด ์๋๋ผ ์ถ์ํ์ ์์กดํด์ผ ํ๋ค๋ ์์น์ด๋ค.
๐ ๋๋์ .
- ๊ฐ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ ์์น์ ์๋ก๋ค๋ฉด์ ํด๋์ค์ ์ค๊ณ์ ๋ํด ์ข์ ๋ด์ฉ์ด์๋๊ฒ ๊ฐ๋ค.
- ํด๋์ค ๋ํ ์ต๋ํ ์๊ฒ ์ต์ํ์ ์ฑ ์์ผ๋ก ์์ง๋๋ ๋์ด๊ณ ๊ฒฐํฉ๋๋ ๋ฎ์ถ๋๋ก
- ํด๋์ค ๋ด ๋ฉ์๋, ๋ณ์์ ์์ง๋์ ๊ด๊ณ
- ๊ตฌ์ฒด์ ์ธ/์ถ์ ํด๋์ค์ ๊ฒฐํฉ๋์ ๊ด๊ณ
'Study > CleanCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Study][CleanCode - 3] 12. ์ฐฝ๋ฐ์ฑ (0) | 2022.08.04 |
---|---|
[Study][CleanCode - 3] 11. ์์คํ (0) | 2022.08.04 |
[Study][CleanCode - 2] 9. ๋จ์ ํ ์คํธ (0) | 2022.07.17 |
[Study][CleanCode - 2] 8. ๊ฒฝ๊ณ (0) | 2022.07.16 |
[Study][CleanCode - 2] 7. ์ค๋ฅ ์ฒ๋ฆฌ (0) | 2022.07.16 |