๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
[๋ ธ๋ง๋๋ถํด๋ฝ] 3์ฅ. ํจ์ ๋ณธ๋ฌธ
TIL (Today I Learned)
- 2022.02.22
์ค๋ ์ฝ์ ๋ฒ์
- 3์ฅ. ํจ์
์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ์ ์จ๋ณด์ธ์.
- ์ด๋ค ํ๋ก๊ทธ๋จ์ด๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋จ์๊ฐ ํจ์๋ค.
- ์๊ฒ ๋ง๋ค์ด๋ผ!
- ํ ๊ฐ์ง๋ง ํด๋ผ!
- ํจ์๋ ํ ๊ฐ์ง๋ฅผ ํด์ผ ํ๋ค. ๊ทธ ํ ๊ฐ์ง๋ฅผ ์ ํด์ผ ํ๋ค. ๊ทธ ํ ๊ฐ์ง๋ง์ ํด์ผ ํ๋ค.
- ์ง์ ๋ ํจ์ ์ด๋ฆ ์๋์์ ์ถ์ํ ์์ค์ด ํ๋์ธ ๋จ๊ณ๋ง ์ํํ๋ค๋ฉด ๊ทธ ํจ์๋ ํ ๊ฐ์ง ์์ ๋ง ํ๋ค.
- ๋ฐ๋ผ์, ํจ์๊ฐ 'ํ ๊ฐ์ง'๋ง ํ๋์ง ํ๋จํ๋ ๋ฐฉ๋ฒ์ด ํ๋ ๋ ์๋ค. ๋จ์ํ ๋ค๋ฅธ ํํ์ด ์๋๋ผ ์๋ฏธ ์๋ ์ด๋ฆ์ผ๋ก ๋ค๋ฅธ ํจ์๋ฅผ ์ถ์ถํ ์ ์๋ค๋ฉด ๊ทธ ํจ์๋ ์ฌ๋ฌ ์์ ์ ํ๋ ์ ์ด๋ค.
- ํจ์ ๋น ์ถ์ํ ์์ค์ ํ๋๋ก!
- ํจ์๊ฐ ํ์คํ 'ํ ๊ฐ์ง' ์์ ๋ง ํ๋ ค๋ฉด ํจ์ ๋ด ๋ชจ๋ ๋ฌธ์ฅ์ ์ถ์ํ ์์ค์ด ๋์ผ ํด์ผ ํ๋ค.
- ์์์ ์๋๋ก ์ฝ๋ ์ผ๊ธฐ : ๋ด๋ ค๊ฐ๊ธฐ ๊ท์น
- ์ฝ๋๋ ์์์ ์๋๋ก ์ด์ผ๊ธฐ์ฒ๋ผ ์ฝํ์ผ ์ข๋ค. ํ ํจ์ ๋ค์์๋ ์ถ์ํ ์์ค์ด ํ ๋จ๊ณ ๋ฎ์ ํจ์๊ฐ ์จ๋ค. ์ฆ, ์์์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ์ฝ์ผ๋ฉด ํจ์ ์ถ์ํ ์์ค์ด ํ ๋ฒ์ ํ ๋จ๊ณ์ฉ ๋ฎ์์ง๋ค. ๋๋ ์ด๊ฒ์ ๋ด๋ ค๊ฐ๊ธฐ ๊ท์น์ด๋ผ ๋ถ๋ฅธ๋ค.
- Switch ๋ฌธ
- ์์ ๊ด๊ณ๋ก Switch ๋ฌธ์ ์จ๊ธด ํ์๋ ์ ๋๋ก ๋ค๋ฅธ ์ฝ๋์ ๋ ธ์ถํ์ง ์๋๋ค.
- ์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ!
- ํจ์๊ฐ ์๊ณ ๋จ์ํ ์๋ก ์์ ์ ์ธ ์ด๋ฆ์ ๊ณ ๋ฅด๊ธฐ๋ ์ฌ์์ง๋ค.
- ์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์ ๋จธ๋ฆฟ์์์๋ ์ค๊ณ๊ฐ ๋๋ ทํด์ง๋ฏ๋ก ์ฝ๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ฌ์์ง๋ค. ์ข์ ์ด๋ฆ์ ๊ณ ๋ฅธ ํ ์ฝ๋๋ฅผ ๋ ์ข๊ฒ ์ฌ๊ตฌ์ฑํ๋ ์ฌ๋ก๋ ์์ง ์๋ค.
- ์ด๋ฆ์ ๋ถ์ผ ๋๋ ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ค. ๋ชจ๋ ๋ด์์ ํจ์ ์ด๋ฆ์ ๊ฐ์ ๋ฌธ๊ตฌ, ๋ช ์ฌ, ๋์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
- ํจ์ ์ธ์
- ํจ์์์ ์ด์์ ์ ์ธ์ ๊ฐ์๋ 0๊ฐ๋ค.
- ์ธ์คํด์ค ๋ณ์๋ก ์ ์ธํ๋ ๋์ ํจ์ ์ธ์๋ก ๋๊ธฐ๋ ๋ฐฉ๋ฒ๋ ์์๋ค. ํ์ง๋ง ๊ทธ๋ฌ๋ค๋ฉด ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด StringBuffer๋ฅผ ๋ฐ๊ฒฌ ํ ๋๋ง๋ค ์๋ฏธ๋ฅผ ํด์ํด์ผ ํ๋ค.
- ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด StringBuffer๋ฅผ ๋ฐ๊ฒฌํ ๋๋ง๋ค ์๋ฏธ๋ฅผ ํด์ํด์ผํ๋ค.(์์ข์)
- ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด ํ ์์ ์์ ๋ณ๋ก ์ค์ํ์ง ์์ ์ธ๋ถ์ฌํญ, ์ฆ StringBuffer๋ฅผ ์์์ผ ํ๋ค.(์์ข์)
- ๋ง์ด ์ฐ๋ ๋จํญ ํ์
- ์ ๋ ฅ ์ธ์๋ฅผ ๋ณํํ๋ ํจ์๋ผ๋ฉด ๋ณํ๊ฒฐ๊ณผ๋ ๋ฐํ๊ฐ์ผ๋ก ๋๋ ค์ค๋ค.
- ํ๋๊ทธ ์ธ์
- ํจ์๊ฐ ํ๊บผ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ์ฒ๋ฆฌํ๋ค๊ณ ๋๋๊ณ ๊ณตํํ๋ ์
- ๋์ฌ์ ํค์๋
- ํจ์์ ์๋๋ ์ธ์์ ์์์ ์๋๋ฅผ ์ ๋๋ก ํํํ๋ ค๋ฉด ์ข์ ํจ์ ์ด๋ฆ์ด ํ์๋ค.
- ํจ์ ์ด๋ฆ์ ํค์๋๋ฅผ ์ถ๊ฐํ๋ ํ์์ด๋ค. ์ฆ, ํจ์ ์ด๋ฆ์ ์ธ์ ์ด๋ฆ์ ๋ฃ๋๋ค. ์๋ฅผ ๋ค์ด, assertEquals๋ณด๋ค assertExpectedEqualsActual(expected, actual)์ด ๋ ์ข๋ค. ๊ทธ๋ฌ๋ฉด ์ธ์ ์์๋ฅผ ๊ธฐ์ตํ ํ์๊ฐ ์์ด์ง๋ค.
- ๋ถ์ ํจ๊ณผ๋ฅผ ์ผ์ผํค์ง ๋ง๋ผ!
- ํจ์ ์ด๋ฆ๋ง ๋ณด๊ณ ํจ์๋ฅผ ํธ์ถํ๋ ์ฌ์ฉ์๋ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๋ฉด์ ๊ธฐ์กด ์ธ์ ์ ๋ณด๋ฅผ ์ง์๋ฒ๋ฆด ์ํ์ ์ฒํ๋ค.
- ์ด๋ฐ ๋ถ์ํจ๊ณผ๊ฐ ์๊ฐ์ ์ธ ๊ฒฐํฉ์ ์ด๋ํ๋ค. ์ฆ, checkPassword ํจ์๋ ํน์ ์ํฉ์์๋ง ํธ์ถ์ด ๊ฐ๋ฅํ๋ค. ๋ค์ ๋งํด, ์ธ์ ์ ์ด๊ธฐํํด๋ ๊ด์ฐฎ์ ๊ฒฝ์ฐ์์๋ง ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
- ์ถ๋ ฅ ์ธ์
- ์ธ์ s๊ฐ ์ถ๋ ฅ ์ธ์๋ผ๋ ์ฌ์ค์ ๋ถ๋ช ํ์ง๋ง ํจ์ ์ ์ธ๋ถ๋ฅผ ์ฐพ์๋ณด๊ณ ๋์์ผ ์์๋ค. ํจ์ ์ ์ธ๋ถ๋ฅผ ์ฐพ์๋ณด๋ ํ์๋ ์ฝ๋๋ฅผ ๋ณด๋ค๊ฐ ์ฃผ์ถคํ๋ ํ์์ ๋๊ธ์ด๋ค. ์ธ์ง์ ์ผ๋ก ๊ฑฐ์ฌ๋ฆฐ๋ค๋ ๋ป์ด๋ฏ๋ก ํผํด์ผ ํ๋ค.
- ๋ช ๋ น๊ณผ ์กฐํ๋ฅผ ๋ถ๋ฆฌํ๋ผ!
- ํจ์๋ ๋ญ๊ฐ๋ฅผ ์ํํ๊ฑฐ๋ ๋ญ๊ฐ์ ๋ตํ๊ฑฐ๋ ๋ ์ค ํ๋๋ง ํด์ผ ํ๋ค. ๋ ๋ค ํ๋ฉด ์๋๋ค.
- ์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ!
- ์ค๋ฅ ์ฝ๋ ๋์ ์์ธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋๊ฐ ์๋ ์ฝ๋์์ ๋ถ๋ฆฌ๋๋ฏ๋ก ์ฝ๋๊ฐ ๊น๋ํด์ง๋ค.
- Try/Catch ๋ธ๋ก ๋ฝ์๋ด๊ธฐ
- try/catch๋ธ๋ก์ ์๋ ์ถํ๋ค. ์ฝ๋ ๊ตฌ์กฐ์ ํผ๋์ ์ผ์ผํค๋ฉฐ, ์ ์ ๋์๊ณผ ์ค๋ฅ ์ฒ๋ฆฌ ๋์์ ๋ค์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก try/catch ๋ธ๋ก์ ๋ณ๋ ํจ์๋ก ๋ฝ์๋ด๋ ํธ์ด ์ข๋ค.
- ์ค๋ฅ ์ฒ๋ฆฌ๋ ํ ๊ฐ์ง ์์ ์ด๋ค.
- ํจ์๋ 'ํ ๊ฐ์ง'์์ ๋ง ํด์ผ ํ๋ค. ์ค๋ฅ ์ฒ๋ฆฌ๋ 'ํ ๊ฐ์ง' ์์ ์ ์ํ๋ค.
- ์ค๋ฅ ์ฝ๋ ๋์ ์์ธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์์ธ๋ Exception ํด๋์ค์์ ํ์๋๋ค. ๋ฐ๋ผ์ ์ฌ์ปดํ์ผ/์ฌ๋ฐฐ์น ์์ด๋ ์ ์์ธ ํด๋์ค๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- ๋ฐ๋ณตํ์ง ๋ง๋ผ!
- ์ค๋ณต์ ๋ฌธ์ ๋ค.
- include ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ณต์ ์์ค๋ค. ์ฝ๋๋ฅผ ๋ค์ ํ ๋ฒ ์ฝ์ด๋ณธ๋ค. ์ค๋ณต์ ์์ด๋๋ ๋ชจ๋ ๊ฐ๋ ์ฑ์ด ํฌ๊ฒ ๋์์ก๋ค
- ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ
- ๋ชจ๋ ํจ์์ ํจ์ ๋ด ๋ชจ๋ ๋ธ๋ก์ ์ ๊ตฌ์ ์ถ๊ตฌ๊ฐ ํ๋๋ง ์กด์ฌํด์ผ ํ๋ค๊ณ ๋งํ๋ค. ์ฆ, ํจ์๋ return ๋ฌธ์ด ํ๋์ฌ์ผ ํ๋ค๋ ๋ง์ด๋ค. ๋ฃจํ ์์์ break๋ continue๋ฅผ ์ฌ์ฉํด์ ์ ๋๋ฉฐ goto๋ ์ ๋๋ก, ์๋๋ค.
- ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ ๋ชฉํ์ ๊ท์จ์ ๊ณต๊ฐํ์ง๋ง ํจ์๊ฐ ์๋ค๋ฉด ์ ๊ท์น์ ๋ณ ์ด์ต์ ์ ๊ณตํ์ง ๋ชปํ๋ค. ํจ์๊ฐ ์์ฃผ ํด๋๋ง ์๋นํ ์ด์ต์ ์ ๊ณตํ๋ค.
- ๊ทธ๋ฌ๋ฏ๋ก ํจ์๋ฅผ ์๊ฒ ๋ง๋ ๋ค๋ฉด ๊ฐํน return, break, continue๋ฅผ ์ฌ๋ฌ ์ฐจ๋ก ์ฌ์ฉํด๋ ๊ด์ฐฎ๋ค. ์คํ๋ ค ๋๋ก๋ ๋จ์ผ ์ /์ถ๊ตฌ ๊ท์น๋ณด๋ค ์๋๋ฅผ ํํํ๊ธฐ ์ฌ์์ง๋ค. ๋ฐ๋ฉด, goto ๋ฌธ์ ํฐ ํจ์์์๋ง ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก, ์์ ํจ์์์๋ ํผํด์ผํจ ใดํ๋ค.
- ํจ์๋ฅผ ์ด๋ป๊ฒ ์ง์ฃ ?
- ์ฒ์์๋ ๊ธธ๊ณ ๋ณต์กํ๋ค. ๋ค์ฌ์ฐ๊ธฐ ๋จ๊ณ๋ ๋ง๊ณ ์ค๋ณต๋ ๋ฃจํ๋ ๋ง๋ค. ์ธ์ ๋ชฉ๋ก๋ ์์ฃผ ๊ธธ๋ค. ์ด๋ฆ์ ์ฆํฅ์ ์ด๊ณ ์ฝ๋๋ ์ค๋ณต๋๋ค. ํ์ง๋ง ๋๋ ๊ทธ ์ํฌ๋ฅธ ์ฝ๋๋ฅผ ๋น ์ง์์ด ํ ์คํธํ๋ ๋จ์ ํ ์คํธ ์ผ์ด์ค๋ ๋ง๋ ๋ค. ๊ทธ๋ฐ ๋ค์ ๋๋ ๊ทธ ์ํฌ๋ฅธ ์ฝ๋๋ฅผ ๋น ์ง์์ด ํ ์คํธํ๋ ๋จ์ ํ ์คํธ ์ผ์ด์ค๋ ๋ง๋ ๋ค. ๊ทธ๋ฐ ๋ค์ ๋๋ ์ฝ๋๋ฅผ ๋ค๋ฌ๊ณ , ํจ์๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฆ์ ๋ฐ๊พธ๊ณ , ์ค๋ณต์ ์ ๊ฑฐํ๋ค. ๋ฉ์๋๋ฅผ ์ค์ด๊ณ ์์๋ฅผ ๋ฐ๊พผ๋ค. ๋๋ก๋ ์ ์ฒด ํด๋์ค๋ฅผ ์ชผ๊ฐ๊ธฐ๋ ํ๋ค. ์ด ์์ค์๋ ์ฝ๋๋ ํญ์ ๋จ์ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ค.
- ๊ฒฐ๋ก
- ํจ์๋ ๊ทธ ์ธ์ด์์ ๋์ฌ๋ฉฐ, ํด๋์ค๋ ๋ช ์ฌ๋ค.
- ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ ์ ์ธ์ ๋ ์ธ์ด ์ค๊ณ์ ๊ธฐ์ ์ด๋ค.
- ๋๊ฐ ํ๋ก๊ทธ๋๋จธ๋ ์์คํ ์ ๊ตฌํํ ํ๋ก๊ทธ๋จ์ด ์๋๋ผ ํ์ด๊ฐ ์ด์ผ๊ธฐ๋ก ์ฌ๊ธด๋ค.
์ค๋ ์ฝ์ ์๊ฐ์? ๋ ์ค๋ฅด๋ ์๊ฐ์ ๊ฐ๋ณ๊ฒ ์ ์ด๋ณด์ธ์
- ๋๋ ์ฌํ ํจ์๋ฅผ ๋ง๋ค ๋ ์ธ์๋ฅผ ์ฌ์ฉํ๋ค. ์๋ํ๋ฉด ๊ตฌํํ ๋ ๊น๋ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์์ฐจ ์ถ์๋ค. ๋ง์ฝ ๋ค๋ฅธ์ฌ๋์ด ๋ด ํจ์๋ฅผ ๋ณธ๋ค๋ฉด ๋ฌด์จ ์ธ์์ธ์ง ๋ชฐ๋ผ ๊ทธ ํจ์๋ฅผ ํธ์ถํ๋ ๊ณณ์ ์ฐพ๊ณ , ๋ ์ฐพ๊ณ ํ์๊ฒ์ด๋ค. ์๊ฐ์ ๋ง์ด ํ๋นํ์ ๋ฏ ์ถ๋ค.
- ๋ ๋ํ ๊ธฐ์กด์ ํจ์๋ค์ ์ดํด๋ณผ๋ ๋ค IDE์์ quick search๋ฅผ ์ด์ฉํด์ ์ฐพ์ ์ฐพ์ ํจ์๋ฅผ ํด์ํ๋ค. ํจ์์์ ํ๊ฐ์ง๋ง ํ์ง ์๊ณ ์ฌ๋ฌ๊ฐ์ง ํจ์๋ฅผ ๋์ ๋ค๋ฐ์ ์ผ๋ก ์ฐ๊ณ 50์ค์ง๋ฆฌ ํจ์๋ ๋ง๋ค์ด ๋ดค๋ค. ๋ฐ์ฑ์ด ๋๋ค.
๊ถ๊ธํ ๋ด์ฉ์ด ์๊ฑฐ๋, ์ ์ดํด๋์ง ์๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ ์ด๋ณด์ธ์.
- ๊ทธ๋๋... ์ธ์๋ ์ฐ๋ผ๊ณ ์๋ ๊ฑฐ ์๋๊น์?? ์ธ์๋ฅผ ์ ํ ์ฐ์ง ์๋๋ค๋ฉด ์ ์ธํ๋ ๋ณ์๊ฐ ๋๋ฌด ๋ง์์ง๊ฑฐ ๊ฐ์์ ใ ใ ์ถ๋ ฅ๊ฐ์ ์ธ์๊ฐ์ผ๋ก ๊ฐ์ ธ์ค๋๊ฑด ์ข ์๋๋ผ๊ณ ์๊ฐ์ด ๋ค์ง๋ง ์ํ์ ์ผ๋ก ํจ์๋ ์ ๋ ฅ๊ฐ์ด ์๊ณ , ์ถ๋ ฅ๊ฐ์ด ์๋๋ฐ ํ๋ก๊ทธ๋๋ฐ๋ ๋๋ฌด ์ธ์๊ฐ์ ์์ฐ๋ ค๊ณ ํ๋ฉด ํ๋ค๋ฏ ใ ใ ใ
'๊ฐ๋ฐ > ๊ฐ๋ฐ๊ด๋ จ ์์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ ธ๋ง๋๋ถํด๋ฝ] 2์ฅ. ์๋ฏธ์๋ ์ด๋ฆ (0) | 2022.02.21 |
---|---|
[๋ ธ๋ง๋๋ถํด๋ฝ] Clean Code ์์ (0) | 2022.02.20 |