๋ฐ์ํ
๐ TIL (Today I Learned) ๋ ์ง
2022.02.22
๐ ์ค๋ ์ฝ์ ๋ฒ์
3์ฅ. ํจ์
๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ
- ์ผํธ๊ฐ ์ฝ๋๋ฅผ ๋ณด์ฌ์คฌ์ ๋ ๋๋ ํจ์๊ฐ ๋๋ฌด๋ ์์ ๊น์ง ๋๋๋ค. ๊ทธ๋๊น์ง ๋๋ ์ฅํฉํ๊ฒ ๊ธด ์ค์ ํ๋ก๊ทธ๋จ ํจ์์ ์ต์ํ๋ค. ๊ทธ๋ฐ๋ฐ Sparkle์ ๋ชจ๋ ํจ์๊ฐ 2์ค, 3์ค, 4์ค ์ ๋์๋ค. ๊ฐ ํจ์๊ฐ ๋๋ฌด๋ ๋ช ๋ฐฑํ๋ค. ๊ฐ ํจ์๊ฐ ์ด์ผ๊ธฐ ํ๋๋ฅผ ํํํ๋ค. ๊ฐ ํจ์๊ฐ ๋๋ฌด๋ ๋ฉ์ง๊ฒ ๋ค์ ๋ฌด๋๋ฅผ ์ค๋นํ๋ค. ๋ฐ๋ก ์ด๊ฒ์ด ๋ต์ด๋ค! (p.43)
- ํจ์๊ฐ 'ํ ๊ฐ์ง'๋ง ํ๋์ง ํ๋จํ๋ ๋ฐฉ๋ฒ์ด ํ๋ ๋ ์๋ค. ๋จ์ํ ๋ค๋ฅธ ํํ์ด ์๋๋ผ ์๋ฏธ ์๋ ์ด๋ฆ์ผ๋ก ๋ค๋ฅธ ํจ์๋ฅผ ์ถ์ถํ ์ ์๋ค๋ฉด ๊ทธ ํจ์๋ ์ฌ๋ฌ ์์ ์ ํ๋ ์ ์ด๋ค. (p.45)
- ์ฝ๋๋ ์์์ ์๋๋ก ์ด์ผ๊ธฐ์ฒ๋ผ ์ฝํ์ผ ์ข๋ค. ํ ํจ์ ๋ค์์๋ ์ถ์ํ ์์ค์ด ํ ๋จ๊ณ ๋ฎ์ ํจ์๊ฐ ์จ๋ค. ์ฆ, ์์์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ์ฝ์ผ๋ฉด ํจ์ ์ถ์ํ ์์ค์ด ํ ๋ฒ์ ํ ๋จ๊ณ์ฉ ๋ฎ์์ง๋ค. ๋๋ ์ด๊ฒ์ ๋ด๋ ค๊ฐ๊ธฐ ๊ท์น์ด๋ผ ๋ถ๋ฅธ๋ค. (p.46)
- ๊ธธ๊ณ ์์ ์ ์ธ ์ด๋ฆ์ด ์งง๊ณ ์ด๋ ค์ด ์ด๋ฆ๋ณด๋ค ์ข๋ค. ํจ์ ์ด๋ฆ์ ์ ํ ๋๋ ์ฌ๋ฌ ๋จ์ด๊ฐ ์ฝ๊ฒ ์ฝํ๋ ๋ช ๋ช ๋ฒ์ ์ฌ์ฉํ๋ค. ์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์ ๋จธ๋ฆฟ์์์๋ ์ค๊ณ๊ฐ ๋๋ ทํด์ง๋ฏ๋ก ์ฝ๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ฌ์์ง๋ค. (p.49)
- ํจ์์์ ์ด์์ ์ธ ์ธ์ ๊ฐ์๋ 0๊ฐ(๋ฌดํญ)๋ค. ๋ค์์ 1๊ฐ(๋จํญ)๊ณ , ๋ค์์ 2๊ฐ(์ดํญ)๋ค. 3๊ฐ(์ผํญ)๋ ๊ฐ๋ฅํ ํผํ๋ ํธ์ด ์ข๋ค. 4๊ฐ ์ด์(๋คํญ)์ ํน๋ณํ ์ด์ ๊ฐ ํ์ํ๋ค. ํน๋ณํ ์ด์ ๊ฐ ์์ด๋ ์ฌ์ฉํ๋ฉด ์ ๋๋ค. ์ธ์๋ ์ด๋ ต๋ค. ์ธ์๋ ๊ฐ๋ ์ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค. (p.50)
- ๋ช ๋ น๊ณผ ์กฐํ๋ฅผ ๋ถ๋ฆฌํ๋ผ! ํจ์๋ ๋ญ๊ฐ๋ฅผ ์ํํ๊ฑฐ๋ ๋ญ๊ฐ์ ๋ตํ๊ฑฐ๋ ๋ ์ค ํ๋๋ง ํด์ผ ํ๋ค. ๋ ๋ค ํ๋ฉด ์ ๋๋ค. ๊ฐ์ฒด ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋๋ฉด ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๋ฐํํ๊ฑฐ๋ ๋ ์ค ํ๋๋ค. ๋ ๋ค ํ๋ฉด ํผ๋์ ์ด๋ํ๋ค. (p.56)
- ์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ! ๋ช ๋ น ํจ์์์ ์ค๋ฅ ์ฝ๋๋ฅผ ๋ฐํํ๋ ๋ฐฉ์์ ๋ช ๋ น/์กฐํ ๋ถ๋ฆฌ ๊ท์น์ ๋ฏธ๋ฌํ๊ฒ ์๋ฐํ๋ค. ์์นซํ๋ฉด if๋ฌธ์์ ๋ช ๋ น์ ํํ์์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ฌ์ด ํ์ด๋ค. ์ค๋ฅ ์ฝ๋ ๋์ ์์ธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋๊ฐ ์๋ ์ฝ๋์์ ๋ถ๋ฆฌ๋๋ฏ๋ก ์ฝ๋๊ฐ ๊น๋ํด์ง๋ค. (p.57)
- try/catch ๋ธ๋ก์ ์๋ ์ถํ๋ค. ์ฝ๋ ๊ตฌ์กฐ์ ํผ๋์ ์ผ์ผํค๋ฉฐ, ์ ์ ๋์๊ณผ ์ค๋ฅ ์ฒ๋ฆฌ ๋์์ ๋ค์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก try/catch ๋ธ๋ก์ ๋ณ๋ ํจ์๋ก ๋ฝ์๋ด๋ ํธ์ด ์ข๋ค. ์ ์ ๋์๊ณผ ์ค๋ฅ ์ฒ๋ฆฌ ๋์์ ๋ถ๋ฆฌํ๋ฉด ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์์ ํ๊ธฐ ์ฌ์์ง๋ค. (p.58)
- ์ค๋ฅ ์ฒ๋ฆฌ๋ ํ ๊ฐ์ง ์์ ์ด๋ค. ํจ์๋ 'ํ ๊ฐ์ง' ์์ ๋ง ํด์ผ ํ๋ค. ์ค๋ฅ ์ฒ๋ฆฌ๋ 'ํ ๊ฐ์ง' ์์ ์ ์ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ ์ค๋ฅ๋ง ์ฒ๋ฆฌํด์ผ ๋ง๋ ํ๋ค. ํจ์์ ํค์๋ try๊ฐ ์๋ค๋ฉด ํจ์๋ try ๋ฌธ์ผ๋ก ์์ํด catch/finally ๋ฌธ์ผ๋ก ๋๋์ผ ํ๋ค๋ ๋ง์ด๋ค. (p.59)
- ํจ์๋ฅผ ์ด๋ป๊ฒ ์ง์ฃ ? ์ํํธ์จ์ด๋ฅผ ์ง๋ ํ์๋ ์ฌ๋ ๊ธ์ง๊ธฐ์ ๋น์ทํ๋ค. ๋ ผ๋ฌธ์ด๋ ๊ธฐ์ฌ๋ฅผ ์์ฑํ ๋๋ ๋จผ์ ์๊ฐ์ ๊ธฐ๋กํ ํ ์ฝ๊ธฐ ์ข๊ฒ ๋ค๋ฌ๋๋ค. ์ด์์ ๋๊ฐ ์ํฌ๋ฅด๊ณ ์ด์์ ํ๋ฏ๋ก ์ํ๋ ๋๋ก ์ฝํ ๋๊น์ง ๋ง์ ๋ค๋ฌ๊ณ ๋ฌธ์ฅ์ ๊ณ ์น๊ณ ๋ฌธ๋จ์ ์ ๋ฆฌํ๋ค. ์ฒ์๋ถํฐ ํ ์ง๋ด์ง ์๋๋ค. ๊ทธ๊ฒ ๊ฐ๋ฅํ ์ฌ๋์ ์์ผ๋ฆฌ๋ผ. (p.61)
- ๋๊ฐ(master) ํ๋ก๊ทธ๋๋จธ๋ ์์คํ ์ (๊ตฌํํ ) ํ๋ก๊ทธ๋จ์ด ์๋๋ผ (ํ์ด๊ฐ) ์ด์ผ๊ธฐ๋ก ์ฌ๊ธด๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ผ๋ ์๋จ์ ์ฌ์ฉํด ์ข ๋ ํ๋ถํ๊ณ ์ข ๋ ํํ๋ ฅ์ด ๊ฐํ ์ธ์ด๋ฅผ ๋ง๋ค์ด ์ด์ผ๊ธฐ๋ฅผ ํ์ด๊ฐ๋ค. ์์คํ ์์ ๋ฐ์ํ๋ ๋ชจ๋ ๋์์ ์ค๋ช ํ๋ ํจ์ ๊ณ์ธต์ด ๋ฐ๋ก ๊ทธ ์ธ์ด์ ์ํ๋ค. ์ฌ๊ท๋ผ๋ ๊ธฐ๊ต๋ก ๊ฐ ๋์์ ๋ฐ๋ก ๊ทธ ๋๋ฉ์ธ์ ํนํ๋ ์ธ์ด๋ฅผ ์ฌ์ฉํด ์์ ๋ง์ ์ด์ผ๊ธฐ๋ฅผ ํ์ด๊ฐ๋ค. (p.62)
๐ ์ค๋ ์ฝ์ ์๊ฐ ๋ฐ ๋ ์ค๋ฅด๋ ์๊ฐ
- ์ง๋ ํ๋ก์ ํธ์์ ์ค๋ฅ์ฝ๋๋ฅผ ๋ฐํ ๋ฐ์์ ๊ทธ ์ค๋ฅ์ฝ๋๊ฐ ๋ญ์ง ๋ณด๊ณ ํด๋น ๋ก์ง์ ์ํํ๋ ๋ฐฉ์์ ์ฝ๋๋ฅผ ์์ฑํ์ ์ด ์๋ค. ๊ทผ๋ฐ ์ด๋ฒ ํด๋ฆฐ ์ฝ๋ ์ฑ ์ ์ฝ์ผ๋ฉด์ ๊ทธ๋ฐ ๋ฐฉ์์ด ์์ฃผ ๋นํจ์จ์ ์ด๋ ๊ฒ์ ๊นจ๋ฌ์๋ค. ์์ผ๋ก๋ ์์ธ๋ฅผ ์ ํ์ฉํ์ฌ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ง๋ด์ผ๊ฒ ๋ค.
- ํจ์ ์ด๋ฆ์ ์ง์ ๋ ํ์ดํ์ด ์ค๋ ๊ฑธ๋ฆฌ์ง ์๊ฒ ๋๋๋ก์ด๋ฉด ์งง๊ณ ์์ถ์ ์ผ๋ก ์ง๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ ์๊ฐํ๋๋ฐ ๊ทธ๋ฐ ๋ฐฉ์์ด ์ ์ข๋ค๋ ๊ฒ์ ์์๋ค. ํจ์ ์ด๋ฆ์ ๊ธธ์ด๋ ์ข์ผ๋ ์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๋๊ตฌ๋ ํจ์ ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ์ด ํจ์๊ฐ ์ด๋ค ์์ ์ ํ๋์ง ์ ์ ์๋๋ก ํด์ผ๊ฒ ๋ค.
- ํจ์ ์ธ์์ ๊ฐ์๊ฐ ๋ง์ผ๋ฉด ์ข์ง ์๋ค๋ ์ฌ์ค์ ๋ชฐ๋๋๋ฐ ์ด๋ฒ์ ๊นจ๋ซ๊ฒ ๋์๋ค. ๋๋๋ก์ด๋ฉด ์ธ์์ ๊ฐ์๋ฅผ ์ค์ด๋๋ก ๋ ธ๋ ฅํด์ผ๊ฒ ๋ค. ๋๋๋ก์ด๋ฉด๋ ์๋๊ณ ๋ ธ๋ ฅํ๋ ๊ฒ๋ ์๋๊ณ ๊ทธ๋์ผ๋ง ํ๊ฒ ๋ค!
- ๊ทธ๋์ ํจ์๋ ํ ๊ฐ์ง ์์ ๋ง ํด์ผ ์ข๋ค๋ ๊ฒ์ ๋ชฐ๋๋ค. ๊ทธ๋ฅ ์ด ํจ์ ํธ์ถํ๋ฉด ์ด๋ฐ๊ฑฐ ์ข๋ผ๋ฝ~ ์ฒ๋ฆฌ๋๊ฒ ํ๋๊ฒ ํธํ๊ณ ์ข์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค. ์ด๋ค์ง ๊ทธ ํจ์๋ฅผ ์์ ํ ์ผ์ด ์๊ธฐ๋ฉด ๊ทธ ํ์ฒ๋ฆฌ ์์ ์ ๋๋ฌด ๋ง์ด ํด์คฌ์ด์ผ ํ๊ณ ๊ทธ๋์ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๊ทธ๋ฌ๋ค. ์ด์ ์ผ ๊ทธ ์ด์ ๋ฅผ ์์๋ค. ์์ผ๋ก๋ ๊ทธ๋ฌ์ง ๋ง์์ผ์ง..
- ์ฝ๋ ์์ฑ์ ํ ๋ ๋๋ฌด ํ๋ฒ์ ํ ์ง๋ด๋ ค ๋ ธ๋ ฅํ์ง ์์์ผ๊ฒ ๋ค. ์์ฑํ๊ธฐ๋ ์ ์ ๋จธ๋ฆฌ์์ผ๋ก๋ง ์๊ฐํ๋ฉด์ ๋จธ๋ฆฌ๋ง ๊ตด๋ฆฌ๋ค ์ ์ ์ฝ๋ ์์ฑ ์์๋ ๋ชปํ๊ณ ์์ ์๋๋ง ๋๋์ง๋ ์ผ์ด ๋ฐ์ํ๊ณค ํ๋๋ฐ ์ผ๋จ ์์ฑํ๊ณ ๊ทธ ํ์ ๊ณ์ ๋ค๋ฌ์ด ๊ฐ๋ ๋ฐฉ์์ด ๋ ํจ์จ์ ์ด๊ฒ ๋ค.
๐ค ๊ถ๊ธํ ๋ด์ฉ ๋ฐ ์ ์ดํด๋์ง ์๋ ๋ด์ฉ
- SRP(Single Responsibility Principle) : ๋จ์ผ ์ฑ ์ ์์น, ๋ณ๊ฒฝํด์ผ ํ๋ ์ด์ ๋ ์ค์ง ํ๋์ฌ์ผ ํ๋ค.
- OCP(Open Closed Principle) : ๊ฐ๋ฐฉ ํ์์ ์์น, ํ์ฅ(์์)์๋ ์ด๋ ค ์์ด์ผ ํ๊ณ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
ํด๋์ค ์ค๊ณ ์์น
ํด๋์ค๋ฅผ ์ค๊ณํ ๋๋ ์ฐธ๊ณ ํ ์ ์๋ ๋ช ๊ฐ์ง ์์น์ด ์๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ์์น์ ๋ฐ๋ฅด์ง ์์ ๋ ๋ ๋นจ๋ฆฌ ๊ฐ๋ฐํ๊ธฐ๋ ํ์ง๋ง ์ด ๊ฒฝ์ฐ ์ ์ฝํ ๊ฐ๋ฐ ์๊ฐ๋ณด๋ค ํจ์ฌ ๋ง์ ์ ์ง๋ณด์ ์๊ฐ์ด ํ์
terms.naver.com
๋ฐ์ํ
'ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - 5์ฅ. ํ์ ๋ง์ถ๊ธฐ (0) | 2022.02.28 |
---|---|
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - 4์ฅ. ์ฃผ์ (0) | 2022.02.25 |
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - 2์ฅ. ์๋ฏธ ์๋ ์ด๋ฆ (0) | 2022.02.20 |
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - ์ถ์ฒ์ฌ ~ 1์ฅ. ๊นจ๋ํ ์ฝ๋ (0) | 2022.02.19 |
[TIL] ํด๋ฆฐ์ฝ๋(Clean Code) - ๋ ธ๋ง๋ ๊ฐ๋ฐ์ ๋ถํด๋ฝ ์ฑ๋ฆฐ์ง ์์ (0) | 2022.02.19 |