ํด๋น ๊ธ์ Robert C.Martin ํด๋ฆฐ ์ฝ๋ ๋ผ๋ ์ฑ ์ ์ฝ๊ณ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌ ๋ฐ ํ๊ณ ํ๋ ๊ธ ์ ๋๋ค. ์์ธํ ์ฌํญ์ YES 24 ํด๋ฆฐ ์ฝ๋ - ์ ์์ผ ์ํํธ์จ์ด ์ฅ์ธ ์ ์ ์์ ํ์ธํด์ฃผ์ธ์.
ํด๋ฆฐ ์ฝ๋ - ์ ์์ผ ์ํํธ์จ์ด ์ฅ์ธ ์ ์ (Uncle Bob)
- ์ํค๋ถ์ค
- ์ง์์ด: Robert C.Martin (Uncle Bob)
- ์ฎ๊ธด์ด: ๋ฐ์ฌํธ, ์ดํด์
์ด๋ฒ ์ฅ์์ ์ด์ผ๊ธฐํ๊ณ ์ ํ๋ ๊ฒ
์ด๋ฒ ์ฅ์์๋ ์ค๋ฅ ์ฒ๋ฆฌ (Exception Handling) ์ ๋ํด์ ๋งํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค๋ฅ๋ฅผ ์ ์ํ ๋ ํ๋ก๊ทธ๋๋ฉ์๊ฒ ๊ฐ์ฅ ์ค์ํ ๊ด์ฌ์ฌ๋ ์ค๋ฅ๋ฅผ ์ก์๋ด๋ ๋ฐฉ๋ฒ์ด ๋์ด์ผ ํ๋ค
- ์ค๋ฅ ์ฝ๋๋ณด๋จ ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ
- ์ค๋ฅ ์ฝ๋๋ฅผ ์ ์ํ๋ ๊ฒ์ ํ ๋ฒ์ ํ ๊ฐ์ง๋ฅผ ํ์ง ์์ ํ๋ฅ ์ด ๋๋ค.
- ์ค๋ฅ ์ฝ๋๋ณด๋จ ์์ธ๋ฅผ ํตํด์ ํ ๋ฒ์ ํ ๊ฐ์ง๋ฅผ ํ ์ ์๋๋ก ํ์
- Unckecked Exception ์ ์ฌ์ฉํ๋ผ
- Checked Exception ์ Compile ์์ ์ ์ฒ๋ฆฌํ ์์ธ๋ฅผ handling ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
- ํ์ง๋ง Checked Exception ์ OCP ๋ฅผ ์๋ฐํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- ๋ฉ์๋์์ Checked Exception ์ throw ํ๋ค๋ฉด ์ด๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ ์ฝ๋์์๋ ๋ชจ๋ Checked Exception ์ ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก OCP๋ฅผ ์๋ฐํ๋ค
C#
,C++
์ Checked Exception ์ ์ง์ํ์ง ์๋๋ค.
- ์์ธ์ ์๋ฏธ๋ฅผ ์ ๊ณตํ๋ผ
- ์์ธ๋ฅผ ๋์ง ๋์๋ ์ค๋ฅ ๋ฉ์์ง์ ์ ๋ณด๋ฅผ ๋ด์ ์ ์๋๋ก ํ์
- catch ์์ ์ค๋ฅ๋ฅผ ๊ธฐ๋กํ ์ ์๋๋ก ํ๋ผ
- ์ธ๋ถ API ๋ฅผ ์ฌ์ฉํ ๋๋ Wrapper ๋ฅผ ์ฌ์ฉํ๋ผ
- ์ธ๋ถ API ๋ฅผ ์ด์ฉํ ๋๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์คํ ์ฌ์ด์ ์์กด์ฑ์ ์ค์ด๊ธฐ ์ํด Wrapper ๋ฅผ ์ ์ํ๊ณ Wrapper ์์ ๊ทธ์ ๊ด๋ จ๋ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ผ
- ์ด๋ ๊ฒ ๋๋ค๋ฉด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ ์ข์ ์ํฅ์ ๋ฏธ์น๋ค
- Null ์ ๋ํ ๊ณ ๋ฏผ
- Null ์ ๋ฐํํ์ง ๋ง์๋ผ
- Null ์ ๋ฐํํ๋ค๋ ๊ฒ์ Caller ์๊ฒ ๋ฌธ์ ๋ฅผ ๋ ๋๊ธฐ๋ ๊ฒ์ด๋ค.
- Null ์ ์ ๋ฌํ์ง ๋ง์๋ผ
- ์ด๋ ํ ํ๋ ฅ์์ Null ์ ์ ๋ฌํ์ง ์๋๋ค๋ ๊ท์น์ด ์๋ค๋ฉด ์์ฌํ๊ณ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค.
- ๋งค๋ฒ Null Check ๋ฅผ ํ๊ธฐ ๋๋ฌธ์
- ๊ทธ๋ ๋ค๋ฉด ํ๋ ฅ์ ๋ฉ์์ง๋ ์ ๋๋ก Null ์ด ๋์ง ์๋๋ค๋ ์ ์ฑ ์ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ค๋ฉด ๊ณ ๋ฏผํด์ผ ํ ๋์์ด ์ ์ด์ง๊ฒ ๋๋ค.
- ์ด๋ ํ ํ๋ ฅ์์ Null ์ ์ ๋ฌํ์ง ์๋๋ค๋ ๊ท์น์ด ์๋ค๋ฉด ์์ฌํ๊ณ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค.
- Null ์ ๋ฐํํ์ง ๋ง์๋ผ
๊นจ๋ํ ์ฝ๋๋ ์ฝ๊ธฐ๋ ์ข์์ผ ํ์ง๋ง ์์ ์ฑ๋ ๋์์ผ ํ๋ค. ์ด ๋์ ์์ถฉํ๋ ๋ชฉํ๊ฐ ์๋๋ค.
๋์ ํด์๊ณผ ํ๊ณ
์ด๋ฒ ์ฑํฐ์์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ ๋ ๋ถ๋ถ์ ๋ฐ๋ก Checked Exception ๊ณผ Unckecked Exception ์ด ์๋๊น ์ถ๋ค.
Checked Exception ๊ณผ Unckecked Exception ๋ ์ฒ์ ์๋ฐ๋ฅผ ๋ฐฐ์ ์ ๋ ๋ค๋ค๋ ๋ด์ฉ์ด๊ณ ๊ฐ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์ดํด๋ง ํ๊ณ ๋์ด๊ฐ๋๊ฒ ๊ฐ๋ค.
Checked Exception ์ Compile ์์ ์ Exception Handling ์ ๊ฐ์ ํ ํ๋ค. ๊ทธ์ ๋ฐํด UnChecked Exception ์ Runtime ์์ ์ ๋ฐ์ํ๋ฏ๋ก Exception ์ ์ ์ ํ handling ํด์ผ ํ๋ค.
์ ๋๋ง ์๊ณ ์์๋๋ฐ, ์ด๋ค ์ฌ์ด์ ์ฌ๋ฌ ๋ ผ์์ด ์์๋ค๋ ์ฌ์ค์ ์ด๋ฒ ์ฑํฐ์์ ์ฒ์ ์๊ฒ๋์๋ค.
์ด๋ฐ ์ํฉ์์ Checked Exception ์ด OCP ์ ์๋ฐฐ๋๋ค๋ ์๋ก์ด ์ฌ์ค์ ํฅ๋ฏธ๋ก์ ๊ณ ๋๋ถ์ ํ๋ฒ ๋ OCP ์ ๋ํด์ ์๊ฐํ ์ ์์๋ค.
ํ์ฌ๋ ๊ฐ๋ฐ์ ํ๋ฉด์ Exception Handling ์ ๋์๊ฒ ๋ง์ด ๋ถ์กฑํ ๋ฅ๋ ฅ์ธ๊ฒ ๊ฐ๋ค.
- Runtime Exception ์ด ๋ฐ์ํ ์ ์๋ ์ํฉ์ด๋ผ๋ ๊ฒ์ ์ธ์งํ์ง ๋ชปํจ
- Exception ์ด ๋ฐ์ํ ์ฌ์ง๊ฐ ์๋ ์ํฉ์์ Exception Handling ์ ์ด๋์ ๋ค๋ค์ผํ ์ง ๋ชจ๋ฆ
๋๊ธ