๐ฃ ์๋ก
์ค๋ฅ ์ฒ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ ๋ฐ๋์ ํ์ํ ์์ ์ค ํ๋์ด๋ค. ์๋ชป๋ ๊ฐ๋ฅ์ฑ์ ๋ ์กด์ฌํ๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฌํ ์๋ชป๋ ์ ์ ์ก์ ์ฑ ์์ด ์๋ค. ๊นจ๋ํ ์ฝ๋์ ์ค๋ฅ ์ฒ๋ฆฌ๋ ํ์คํ๊ฒ ์ฐ๊ด์ฑ์ด ์๋ค. ์ฌ๊ธฐ์ ๊ธฐ ํฉ์ด์ง ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋๋ก ์ค์ ์ฝ๋๊ฐ ํ๋ ์ผ์ ํ์ ํ๊ธฐ ์ด๋ ค์ธ ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๊น๋ํ๊ฒ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฒ๊ณผ ๊ณ ๋ ค ์ฌํญ๋ค์ ์ธ์งํ๊ณ ์์ด์ผ ํ๋ค.
๐ ์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ
- ์ค๋ฅ ํ๋๊ทธ๋ ํธ์ถ์์๊ฒ ์ค๋ฅ ์ฝ๋๋ฅผ ๋ฐํํ์ฌ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ ผ๋ฆฌ์ ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋๊ฐ ๋ค์์ฌ ๊น๋ํ์ง ๋ชปํ๋ค.
- ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ค๋ฅ๋ฅผ ๋์ง๋ ํธ์ด ํจ์ฌ ์ข๋ค. ๊ทธ๋ฌ๋ฉด ํธ์ถ์ ์ฝ๋๊ฐ ๋ ๊น๋ํด์ง๋ค.
๐ Try-Catch-Finally ๋ฌธ๋ถํฐ ์์ฑํ๋ผ
try ๋ธ๋ก์ ํธ๋์ญ์ ๊ณผ ๋น์ทํ๋ค. try์์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด catch ๋ธ๋ก์์ ํ๋ก๊ทธ๋จ ์ํ๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ์ ์งํด์ผ ํ๋ค. ๋ฐ๋ผ์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ์ฝ๋๋ try-catch-finaly ๋ฌธ์ผ๋ก ์์ํ๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋ฌ๋ฉด try ๋ธ๋ก์์ ๋ฌด์จ ์ผ์ด ์๊ธฐ๋ ์ง ํธ์ถ์๊ฐ ๊ธฐ๋ํ๋ ์ํ๋ฅผ ์ ์ํ๊ธฐ๊ฐ ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ์ ๋ก ์์ธ๋ฅผ ์ผ์ผํค๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋จผ์ ์์ฑํ๊ณ , ํ ์คํธ๋ฅผ ํต๊ณผํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ถ์ฅํ๋ค. ์์ฐ์ค๋ฝ๊ฒ try ๋ธ๋ก์ ํธ๋์ญ์ ๋ฒ์๋ถํฐ ๊ตฌํํ๊ฒ ๋์ด์ ํธ๋์ญ์ ๋ณธ์ง์ ์ ์งํ๊ธฐ ์ฌ์์ง๋ค.
๐ ๋ฏธํ์ธ ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ
๋ฏธํ์ธ(Unchecked) ์์ธ, ํ์ธ๋(Checked) ์์ธ
- ์์ ์ ์ธ SW๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ํ์ธ๋ ์์ธ๊ฐ ๋ฐ๋์ ํ์ํ์ง๋ ์๋ค.
- ํ์ธ๋ ์์ธ๋ OCP๋ฅผ ์๋ฐํ๋ค. ํด๋น ๋ฉ์๋์์ ์์ธ๋ฅผ ๋์ก๋๋ฐ catch ๋ธ๋ก์ด ์์์ ์๋ค๋ฉด ๊ทธ ์ฌ์ด ๋ฉ์๋ ๋ชจ๋ ํด๋น ์์ธ๋ฅผ ์ ์ํด์ผ ํ๋ค. ๋ฐ๋ผ์ ํ์ ๋จ๊ณ์์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์์ ๋จ๊ณ ๋ชจ๋ ๊ณ ์ณ์ผ ํ๋ค. (์ฐ์์ ์ธ ์์ ํ์)
- ํ์ธ๋ ์์ธ๋ ์บก์ํ๊ฐ ๊นจ์ง๋ค. ๋ชจ๋ ํจ์๊ฐ ์ตํ์ ํจ์์ ์์ธ๋ฅผ ์์์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ์์ธ์ ์๋ฏธ๋ฅผ ์ ๊ณตํ๋ผ
์ ํ ์ํฉ์ ์ถฉ๋ถํ ๋ง๋ถ์ฌ์ผ ํ๋ค. (Java - ๋ชจ๋ ์์ธ์ ํธ์ถ ์คํ ์ ๊ณต)
์ค๋ฅ ๋ฉ์์ง์ ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ๋ด์ ์์ธ์ ํจ๊ป ๋์ง๋ค. ์ฆ ์คํจํ ์ฐ์ฐ ์ด๋ฆ๊ณผ ์ ํ์ ์ธ๊ธํด์ผ ํ๋ฉฐ, ๋ก๊น ์ ์ฌ์ฉํ๋ค๋ฉด ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ๋จ๊ฒจ์ค์ผ ํ๋ค. (๋ก๊น ์ ์ค์์ฑ์ ๋ํด ์๋์ ๊ฐ์ด ๊ธฐ๋กํ ์ ์ด ์๋ค)
๐ ํธ์ถ์๋ฅผ ๊ณ ๋ คํ์ฌ ์์ธ ํด๋์ค๋ฅผ ์ ์ํ๋ผ
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ง ์์ธ๋ฅผ ๋ชจ๋ ์ก์ ๊ฐ๊ฐ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ผ ์๊ฐํ๋ค. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ง ์์ธ๋ฅผ ์ก์ ํ๋์ ์์ธ ํด๋์ค๋ฅผ ๋ฐํํ๋ ๊ฐ์ธ๊ธฐ(wrapper) ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณด๋ ๊ฒ์ด ์ข๋ค. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ก๊ทธ๋จ ์ฌ์ด ์์กด์ฑ์ด ํฌ๊ฒ ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์คํธํ๊ธฐ๋ ์ฌ์์ง ์ ์์ด ๋งค์ฐ ์ ์ฉํ๋ค.
...
public void hello() {
try {
...
} catch (FirstException e) {
throw new ์๋ก_์ ์ํ_์์ธ_ํด๋์ค(e);
} catch (SecondException e) {
throw new ์๋ก_์ ์ํ_์์ธ_ํด๋์ค(e);
} ...
}
๐ null์ ๋ฐํํ๊ฑฐ๋ ์ ๋ฌํ์ง ๋ง๋ผ
null์ ํ์ธํ๋ ์ฝ๋๋ ๊ฐ๋ ์ฑ์ ๋จ์ดํธ๋ฆฌ๊ณ , ๋๋ฝ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ NPE(NullPointException)๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ Collections.emptyList()๋ฅผ ๋ฐํํ๋๋ก ํ์.
๋ฉ์๋์ null์ ๋๊ธฐ๋ ํ์๋ ์ ์ด์ null์ ๋๊ธฐ์ง ๋ชปํ๋๋ก ๊ธ์งํ๋ ์ ์ฑ ์ด ํฉ๋ฆฌ์ ์ด๋ค. ์ด๋ฌ๋ฉด ๋ถ์ฃผ์ํ ์ค์๋ฅผ ์ ์ง๋ฅผ ํ๋ฅ ์ด ์์ ํ ์์ด์ง๋ ๊ฒ์ ์๋์ง๋ง ํ๋ฅ ์ด ๋งค์ฐ ๋ฎ์์ง ์ ์๋ค.
'์ฑ > CleanCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โจ Clean Code 9์ฅ: ๋จ์ ํ ์คํธ (0) | 2021.01.31 |
---|---|
โจ Clean Code 7์ฅ: ์ค๋ฅ ์ฒ๋ฆฌ (0) | 2021.01.21 |
โจ Clean Code 6์ฅ: ๊ฐ์ฒด์ ์๋ฃ๊ตฌ์กฐ (0) | 2021.01.20 |
โจ Clean Code 5์ฅ: ํ์ ๋ง์ถ๊ธฐ (0) | 2021.01.14 |
โจ Clean Code 3์ฅ: ํจ์ (0) | 2020.12.15 |
โจ Clean Code 2์ฅ: ์๋ฏธ ์๋ ์ด๋ฆ (0) | 2020.11.23 |