๋ฐ์ํ
๐ TIL (Today I Learned) ๋ ์ง
2022.03.04
๐ ์ค๋ ์ฝ์ ๋ฒ์
7์ฅ. ์ค๋ฅ ์ฒ๋ฆฌ
๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ
- ์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ : ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์์ธ๋ฅผ ๋์ง๋ ํธ์ด ๋ซ๋ค. ๊ทธ๋ฌ๋ฉด ํธ์ถ์ ์ฝ๋๊ฐ ๋ ๊น๋ํด์ง๋ค. ๋ ผ๋ฆฌ๊ฐ ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋์ ๋ค์์ด์ง ์์ผ๋๊น. (p.131)
- Try-Catch-Finally ๋ฌธ๋ถํฐ ์์ฑํ๋ผ : ์ด๋ค ๋ฉด์์ try ๋ธ๋ก์ ํธ๋์ญ์ ๊ณผ ๋น์ทํ๋ค. try ๋ธ๋ก์์ ๋ฌด์จ ์ผ์ด ์๊ธฐ๋ ์ง catch ๋ธ๋ก์ ํ๋ก๊ทธ๋จ ์ํ๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ์ ์งํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์์ธ๊ฐ ๋ฐ์ํ ์ฝ๋๋ฅผ ์งค ๋๋ try-catch-finally ๋ฌธ์ผ๋ก ์์ํ๋ ํธ์ด ๋ซ๋ค. ๊ทธ๋ฌ๋ฉด try ๋ธ๋ก์์ ๋ฌด์จ ์ผ์ด ์๊ธฐ๋ ์ง ํธ์ถ์๊ฐ ๊ธฐ๋ํ๋ ์ํ๋ฅผ ์ ์ํ๊ธฐ ์ฌ์์ง๋ค. (p.132)
- ๋จผ์ ๊ฐ์ ๋ก ์์ธ๋ฅผ ์ผ์ผํค๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ ํ ํ ์คํธ๋ฅผ ํต๊ณผํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ถ์ฅํ๋ค. ๊ทธ๋ฌ๋ฉด ์์ฐ์ค๋ฝ๊ฒ try ๋ธ๋ก์ ํธ๋์ญ์ ๋ฒ์๋ถํฐ ๊ตฌํํ๊ฒ ๋๋ฏ๋ก ๋ฒ์ ๋ด์์ ํธ๋์ญ์ ๋ณธ์ง์ ์ ์งํ๊ธฐ ์ฌ์์ง๋ค. (p.133)
- ๋ฏธํ์ธ(unchecked) ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ : ํ์ธ๋ ์์ธ๋ OCP(Open Closed Principle)๋ฅผ ์๋ฐํ๋ค. ๋ฉ์๋์์ ํ์ธ๋ ์์ธ๋ฅผ ๋์ก๋๋ฐ catch ๋ธ๋ก์ด ์ธ ๋จ๊ณ ์์ ์๋ค๋ฉด ๊ทธ ์ฌ์ด ๋ฉ์๋ ๋ชจ๋๊ฐ ์ ์ธ๋ถ์ ํด๋น ์์ธ๋ฅผ ์ ์ํด์ ํ๋ค. ์ฆ, ํ์ ๋จ๊ณ์์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์์ ๋จ๊ณ ๋ฉ์๋ ์ ์ธ๋ถ๋ฅผ ์ ๋ถ ๊ณ ์ณ์ผ ํ๋ค๋ ๋ง์ด๋ค. ๋ชจ๋๊ณผ ๊ด๋ จ๋ ์ฝ๋๊ฐ ์ ํ ๋ฐ๋์ง ์์๋๋ผ๋ (์ ์ธ๋ถ๊ฐ ๋ฐ๋์์ผ๋ฏ๋ก) ๋ชจ๋์ ๋ค์ ๋น๋ํ ๋ค์์ ๋ฐฐํฌํด์ผ ํ๋ค๋ ๋ง์ด๋ค. (p.133)
- ์์ธ์ ์๋ฏธ๋ฅผ ์ ๊ณตํ๋ผ : ์ค๋ฅ ๋ฉ์์ง์ ์ ๋ณด๋ฅผ ๋ด์ ์์ธ์ ํจ๊ป ๋์ง๋ค. ์คํจํ ์ฐ์ฐ ์ด๋ฆ๊ณผ ์คํจ ์ ํ๋ ์ธ๊ธํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค๋ฉด catch ๋ธ๋ก์์ ์ค๋ฅ๋ฅผ ๊ธฐ๋กํ๋๋ก ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ๋๊ฒจ์ค๋ค. (p.135)
- ํธ์ถ์๋ฅผ ๊ณ ๋ คํด ์์ธ ํด๋์ค๋ฅผ ์ ์ํ๋ผ : ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค๋ฅ๋ฅผ ์ ์ํ ๋ ํ๋ก๊ทธ๋๋จธ์๊ฒ ๊ฐ์ฅ ์ค์ํ ๊ด์ฌ์ฌ๋ ์ค๋ฅ๋ฅผ ์ก์๋ด๋ ๋ฐฉ๋ฒ์ด ๋์ด์ผ ํ๋ค. (p.135)
- ๋ ์์ ์ธ ์์ธ ์ ํ ๋ฐํ : ์ธ๋ถ API๋ฅผ ์ฌ์ฉํ ๋๋ ๊ฐ์ธ๊ธฐ ๊ธฐ๋ฒ์ด ์ต์ ์ด๋ค. ์ธ๋ถ API๋ฅผ ๊ฐ์ธ๋ฉด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ก๊ทธ๋จ ์ฌ์ด์์ ์์กด์ฑ์ด ํฌ๊ฒ ์ค์ด๋ ๋ค. ๋์ค์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ์ํ๋ ๋น์ฉ์ด ์ ๋ค. ๋ํ ๊ฐ์ธ๊ธฐ ํด๋์ค์์ ์ธ๋ถ API๋ฅผ ํธ์ถํ๋ ๋์ ํ ์คํธ ์ฝ๋๋ฅผ ๋ฃ์ด์ฃผ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ก๊ทธ๋จ์ ํ ์คํธํ๊ธฐ๋ ์ฌ์์ง๋ค. (p.137)
- ์ ์ ํ๋ฆ์ ์ ์ํ๋ผ : ์์ธ๊ฐ ๋ ผ๋ฆฌ๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค. ํน์ ์ํฉ์ ์ฒ๋ฆฌํ ํ์๊ฐ ์๋ค๋ฉด ๋ ์ข์ง ์์๊น? ๊ทธ๋ฌ๋ฉด ์ฝ๋๊ฐ ํจ์ฌ ๋ ๊ฐ๊ฒฐํด์ง๋ฆฌ๋ผ. ์ด๋ฅผ ํน์ ์ฌ๋ก ํจํด(Special Case Pattern)์ด๋ผ ๋ถ๋ฅธ๋ค. ํด๋์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ฒด๋ฅผ ์กฐ์ํด ํน์ ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค. ๊ทธ๋ฌ๋ฉด ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ์์ธ์ ์ธ ์ํฉ์ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ด์ง๋ค. ํด๋์ค๋ ๊ฐ์ฒด๊ฐ ์์ธ์ ์ธ ์ํฉ์ ์บก์ํํด์ ์ฒ๋ฆฌํ๋ฏ๋ก. (p.137)
- null์ ๋ฐํํ์ง ๋ง๋ผ : null์ ๋ฐํํ๋ ์ฝ๋๋ ์ผ๊ฑฐ๋ฆฌ๋ฅผ ๋๋ฆด ๋ฟ๋ง ์๋๋ผ ํธ์ถ์์๊ฒ ๋ฌธ์ ๋ฅผ ๋ ๋๊ธด๋ค. ๋๊ตฌ ํ๋๋ผ๋ null ํ์ธ์ ๋นผ๋จน๋๋ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ํต์ ๋ถ๋ฅ์ ๋น ์ง์ง๋ ๋ชจ๋ฅธ๋ค. ๋ฉ์๋์์ null์ ๋ฐํํ๊ณ ํ ์ ํน์ด ๋ ๋ค๋ฉด ๊ทธ ๋์ ์์ธ๋ฅผ ๋์ง๊ฑฐ๋ ํน์ ์ฌ๋ก ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ์ฌ์ฉํ๋ ค๋ ์ธ๋ถ API๊ฐ null์ ๋ฐํํ๋ค๋ฉด ๊ฐ์ธ๊ธฐ ๋ฉ์๋๋ฅผ ๊ตฌํํด ์์ธ๋ฅผ ๋์ง๊ฑฐ๋ ํน์ ์ฌ๋ก ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๋ฐฉ์์ ๊ณ ๋ คํ๋ค. ๋ง์ ๊ฒฝ์ฐ์ ํน์ ์ฌ๋ก ๊ฐ์ฒด๊ฐ ์์ฌ์ด ํด๊ฒฐ์ฑ ์ด๋ค. (p.139)
- null์ ์ ๋ฌํ์ง ๋ง๋ผ : ์ ์์ ์ธ ์ธ์๋ก null์ ๊ธฐ๋ํ๋ API๊ฐ ์๋๋ผ๋ฉด ๋ฉ์๋๋ก null์ ์ ๋ฌํ๋ ์ฝ๋๋ ์ต๋ํ ํผํ๋ค. ๋๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํธ์ถ์๊ฐ ์ค์๋ก ๋๊ธฐ๋ null์ ์ ์ ํ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ์ด์ null์ ๋๊ธฐ์ง ๋ชปํ๋๋ก ๊ธ์งํ๋ ์ ์ฑ ์ด ํฉ๋ฆฌ์ ์ด๋ค. ์ฆ, ์ธ์๋ก null์ด ๋์ด์ค๋ฉด ์ฝ๋์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๋ง์ด๋ค. ์ด๋ฐ ์ ์ฑ ์ ๋ฐ๋ฅด๋ฉด ๊ทธ๋งํผ ๋ถ์ฃผ์ํ ์ค์๋ฅผ ์ ์ง๋ฅผ ํ๋ฅ ๋ ์์์ง๋ค. (p.140)
- ๊นจ๋ํ ์ฝ๋๋ ์ฝ๊ธฐ๋ ์ข์ํ ํ์ง๋ง ์์ ์ฑ๋ ๋์์ผ ํ๋ค. ์ด ๋์ ์์ถฉํ๋ ๋ชฉํ๊ฐ ์๋๋ค. ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋จ ๋ ผ๋ฆฌ์ ๋ถ๋ฆฌํด ๋ ์์ ์ธ ์ฌ์์ผ๋ก ๊ณ ๋ คํ๋ฉด ํผํผํ๊ณ ๊นจ๋ํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค. ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋จ ๋ ผ๋ฆฌ์ ๋ถ๋ฆฌํ๋ฉด ๋ ๋ฆฝ์ ์ธ ์ถ๋ก ์ด ๊ฐ๋ฅํด์ง๋ฉฐ ์ฝ๋ ์ ์ง๋ณด์์ฑ๋ ํฌ๊ฒ ๋์ ์ง๋ค. (p.142)
๐ ์ค๋ ์ฝ์ ์๊ฐ ๋ฐ ๋ ์ค๋ฅด๋ ์๊ฐ
- ์ง๋ ํ๋ก์ ํธ์์ ์ค๊ณ์๊ฐ ์์ฑํ ์ค๊ณ์๋ฅผ ๋ณด๊ณ ์ฝ๋ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์์๋๋ฐ ์ค๋ฅ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋ก์ง์ด ์์๋ค. ๊ทธ๋์์ ๊ทธ๋ฐ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ฌ ์์๊ธฐ ๋๋ฌธ์ ๋ณ ์๊ฐ์์ด ๊ทธ๋๋ก ์์ฑํ๊ธด ํ๋๋ฐ ์ง๊ธ ์ฑ ์ ์ฝ๊ณ ๋์ ์๊ฐํด๋ณด๋ ๊ทธ๋ฐ ์ค๋ฅ ์ฝ๋๋ฅผ ํ์ฉํ ๋ฐฉ์๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋๋ผ๋ฉด ์ฝ๋ ์์ฑ์ด ๋ ์์ํด์ง์ง ์์์๊น ํ๋ ์๊ฐ์ด ๋ ๋ค.
- null์ ๋ฐํํ๋ค๋์ง null์ ์ ๋ฌํ๋ ๊ฒฝ์ฐ์ ๋ํด์๋ ํฌ๊ฒ ์๊ฐํด๋ณธ์ ์ด ์์๋๋ฐ ์ฑ ์ ์ฝ๊ณ ๋๋ null์ ๋ฐํํ๊ณ ์ ๋ฌํ๋ ๊ฒฝ์ฐ๋ฅผ ์ง์งํ๊ฒ ๊ณ ๋ฏผํ ํ์๊ฐ ์๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์์ผ๋ก ์ฝ๋ ์์ฑ์ ํ ๋ null์ ๋ฐํํ๊ณ ์ ๋ฌํ๋ ๊ฒ์ ์ ๊ฒฝ์ฐ๋ฉด์ ์ฝ๋ ์์ฑ์ ํด์ผ๊ฒ ๋ค.
- ์ต๊ทผ ๋ค๋ฅธ ํ์ฌ CTO๋ถ์ ๊ฐ์๋ฅผ ๋ค์์ ์ด ์๋๋ฐ ์์ธ ์ฒ๋ฆฌ์ ๋ํ ๋ด์ฉ์ด ๋์จ์ ์ด ์์๋ค. ์์ฃผ ๋ฐ์ํ๊ณ ์ฒ๋ฆฌํด์ผ ํ ์์ธ ์ฒ๋ฆฌ์ ๊ฒฝ์ฐ ๊ณตํต ์์ธ ์ฒ๋ฆฌ ๋ชจ๋์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ด์๊ณ ๋ณดํต ํ์ฌ๋ค๋ง๋ค ํ์ฌ๋ง์ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ์์ด ์กด์ฌ ํ ๊ฒ์ด๋ค๋ผ๋ ์๊ธฐ๋ฅผ ํ์ จ๋ค. ๋ด๊ฐ ๋ค๋๊ณ ์๋ ํ์ฌ๋ ๊ทธ๋ฐ๊ฑฐ ์๋๋ฐ ๋ง์ด๋ค. ๐ญ ๊ทธ CTO๋ถ ๋ง์ฒ๋ผ ์ง์ง ์์ด์ผ ํ๋๊ฒ ๋ง๋ค๊ณ ์๊ฐํ๋ค. ๊ผญ ํ์ฌ๋ง์ ๊ณตํต ์์ธ ์ฒ๋ฆฌ ๋ชจ๋์ด ์๋๋๋ผ๋ ํ๋ก์ ํธ ์ํํ๊ฑฐ๋ ์ฝ๋ ์์ฑ์์ ์์ฃผ ์ฌ์ฉํ ์์ธ ์ฒ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ณ๋์ ์์ธ ์ฒ๋ฆฌ ๋ชจ๋์ ๋ง๋ค์ด ํ์ฉํ๋๋ก ํด์ผ๊ฒ ๋ค.
๐ค ๊ถ๊ธํ ๋ด์ฉ ๋ฐ ์ ์ดํด๋์ง ์๋ ๋ด์ฉ
- ์ฝ๋ฉ ํ ๋๋ง๋ค ๋๋ ์๊ฐ์ธ๋ฐ ์ด๋๊ฐ์ ๋ณด๊ณ ์ฐธ๊ณ ํ ๋งํ ์ข์ ์ํ ์์ค ์ฝ๋๋ค์ด ์์๊น? ์คํ ์์ค๋ค์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ๋ง์ ๋์์ด ๋๋ ค๋? ์๋ค๋ฉด ์ด๋ค ์คํ ์์ค๊ฐ ์ฝ๋ ์์ฑ์ด ์ ์์ฑ๋์ด ์์๊น? ๋งค๋ฒ ์๊ฐ๋ง ํด๋ดค๋๋ฐ ์ด๋ฒ์ ํ๋์ผ๋ก ์ฎ๊ฒจ์ ์ดํด๋ด์ผ๊ฒ ๋ค.
๋ฐ์ํ
'ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - 10์ฅ. ํด๋์ค (0) | 2022.03.09 |
---|---|
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - 9์ฅ. ๋จ์ ํ ์คํธ (0) | 2022.03.05 |
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - 6์ฅ. ๊ฐ์ฒด์ ์๋ฃ ๊ตฌ์กฐ (0) | 2022.03.01 |
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - 5์ฅ. ํ์ ๋ง์ถ๊ธฐ (0) | 2022.02.28 |
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - 4์ฅ. ์ฃผ์ (0) | 2022.02.25 |