โ ์ด ํฌ์คํ ์ ๋ ธ๋ง๋ ์ฝ๋ ๋ถํด๋ฝ 'ํด๋ฆฐ ์ฝ๋' ์ฑ๋ฆฐ์ง๋ฅผ ์งํํ๋ฉด์ ์์ฑํ๋ TIL์ด๋ฉฐ, ์ถ์ฒ๋ Clean Code์ ๋๋ค.
๐ ๋ฒ์ : 10์ฅ ํด๋์ค
๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ์ ์จ๋ณด์ธ์.
- ์ข์ Class ?
- ํฌ๊ธฐ๊ฐ ์์ ํด๋์ค
- ์ถ์ํ๊ฐ ์ ๋ ํด๋์ค
- class ์ถ์ํ ๋จ๊ณ
๋ณ์ โก static public ์์ โก private ์์ โก static private ๋ณ์ โก private instance ๋ณ์ โก ๋ณ์ ๋ชฉ๋ก ๋ค์ ๊ณต๊ฐ ํจ์ โก private ํจ์ ํธ์ถํ๋ ํจ์ - ๊ฐ์ ํจํค์ง ์์์ test code๊ฐ ํจ์ ํธ์ถ or ๋ณ์ ์ฌ์ฉ ์ โก protected ์ ์ธ or ํจํค์ง ์ ์ฒด๋ก ๊ณต๊ฐ
- class ์ถ์ํ ๋จ๊ณ
- ์๋ช
์ํ๊ธฐ
- ํด๋์ค๋ช ์ ํด๋น ํด๋์ค ์ญํ ์์ฑ
- ํด๋์ค ์ค๋ช : if / or / and / but ์ฌ์ฉํ์ง ์๊ณ 25์ ๋ด์ธ
- ํฐ class ๋ช ๊ฐ < ์์ class ์ฌ๋ฌ ๊ฐ
- ์์ง๋ โฌ class
- ์ธ์คํด์ค ๋ณ์์ ์ โฌ , ๊ฐ ํด๋์ค ๋ฉ์๋ - instance ๋ณ์ 1๊ฐ ์ด์ ์ฌ์ฉ
- ์์คํ
๊ฒฐํฉ๋ โฌ class
- ์ ์ฐ์ฑ, ์ฌ ์ฌ์ฉ์ฑ ํฅ์
- ๊ฒฐํฉ๋ โฌ = ๋ค๋ฅธ ์์์ ๋ณํ๋ก๋ถํฐ ์ ๋ถ๋ฆฌ๋์ด ์๋ค๋ ์๋ฏธ
- SRP
- ๋จ์ผ ์ฑ ์ ์์น์ ์งํค์.
- ํฐ ๋จ์๋ฅผ ์์ ๋จ์๋ก ์ชผ๊ฐ์ด์ ์์ฑ
yled
โ๐ป ์ค๋ ์ฝ์ ์๊ฐ์? ๋ ์ค๋ฅด๋ ์๊ฐ์ ๊ฐ๋ณ๊ฒ ์ ์ด๋ณด์ธ์.
์ด๋ค ์์๋ฅผ ๋ง๋ค ๋๋ ํฌ๊ธฐ๊ฐ ์๊ณ , ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ํ๋ฉด์, ์๋ฏธ๋ฅผ ํ ๋ฒ์ ํ์ ํ ์ ์๋ ์ด๋ฆ์ ์ง๋ ๊ฒ์ด ํด๋ฆฐ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ธฐ์ด๋ผ๋ ๊ฒ์ ๋ค์ ํ๋ฒ ๋๊ผ๋ค. ํ ํด๋์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ์ ํ๊ฒ ๋๋ค๋ฉด, ํ ๊ฐ๋ง ์์ด๋ ์ฌ๋ฌ ๊ฐ์ง ์ญํ ์ ํด์ ํธํ ๊ฒ ๊ฐ์ง๋ง ์ฌ ์ฌ์ฉ์ฑ์์๋ ๋ถ๋ฆฌํด์ง๊ณ , ์์ ํ ์ผ์ด ์ต์ํ์ด์ด์ผ ํ์ง๋ง ๊ทธ๋์ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ ๊ณ ์ณ์ผ ํด์ ์๊ฐ์ด ๋ง์ด ์์๋๋ค.
๊ฒฐ๊ตญ ํด๋ฆฐ ์ฝ๋์ ํต์ฌ์ ์์ง๋๋ฅผ ๋ฎ๊ฒ ๋ง๋ค์ด์ ๋ค๋ฅธ ์์๋ก๋ถํฐ ์ ๊ฒฉ๋ฆฌ๋์ด ์ด๋์ ๋ถ์ฌ์ ์ ์ธ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ธ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฐ ์ฝ๋๋ฅผ ์งค ์ ์๊ธฐ ์ํด์๋ ๊ตฌํ์ ์ค์ ์ ๋๊ณ ๊ฐ๋ฐํ๊ธฐ๋ณด๋ค ๊น๋ํ๊ณ ๋ณด๊ธฐ ์ข์ ์ฝ๋๋ฅผ ๋ง๋๋ ๋ ธ๋ ฅ์ ๊ฒ์๋ฆฌํ์ง ๋ง์์ผ๊ฒ ๋ค๊ณ ๋๊ผ๋ค.
๐ ๊ถ๊ธํ ๋ด์ฉ์ด ์๊ฑฐ๋, ์ ์ดํด๋์ง ์๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ ์ด๋ณด์ธ์.
SRP : ๋จ์ผ ์ฑ ์ ์์น , ํด๋์ค๋ ๋ชจ๋์ ๋ณ๊ฒฝํ ์ด์ ๊ฐ ํ๋, ๋จ ํ๋๋ฟ์ด์ด์ผ ํ๋ค.
OCP : ํด๋์ค๋ ํ์ฅ์ ๊ฐ๋ฐฉ์ ์ด๊ณ ์์ ์ ํ์์ ์ด์ด์ผ ํ๋ค.
DIP : ํด๋์ค๊ฐ ์์ธํ ๊ตฌํ์ด ์๋๋ผ ์ถ์ํ์ ์์กดํด์ผ ํ๋ค.
๋๊ธ