๐๏ธ ํด๋ฆฐ ์ฝ๋: Null ๋ฐํ์ ํผํ๋ ๋ฒ
NullPointerException ์ํ์ ์ค์ด๋ ค๋ฉด ๋ฉ์๋์์ null ๊ฐ์ ๋ฐํํ์ง ์๋๋ก ๋ ธ๋ ฅํ์ธ์. ๊ฐ์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด์๋ Optional, ๋น ์ปฌ๋ ์ , ๋๋ ์๋ฌ ํธ๋ค๋ง์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋์ฒด ์ ๋ต์ ์ฌ์ฉํ์ญ์์ค. ย ๐ null์ ๋ฐํํ๋ ๋์ , Optional์ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋ถ์ฌ๋ฅผ ๋ช ์์ ์ผ๋ก ํํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ย ๐ ์ปฌ๋ ์ ์ ์ฒ๋ฆฌํ ๋, null ๋์ ๋น ์ปฌ๋ ์ ์ ๋ฐํํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ๊ฐ์ํ๋์ด null ๊ฒ์ฌ๊ฐ ํ์ํ์ง ์๊ณ ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๐ ๊ฐ์ด ์๋ ์ํ๋ฅผ ๋ํ๋ด๋ ํน์ ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ Null Object Pattern์ ๊ตฌํํ์ธ์. ์ด ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ๋์ผํ ์ธํฐํ์ด์ค ๋๋ ํด๋์ค๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค. ๐ ๊ฐ์ ๋ถ์ฌ๊ฐ ์์ธ์ ์ธ ์กฐ๊ฑด์ ๋ํ๋ด๋ ๊ฒฝ์ฐ null์ ๋ฐํํ๋ ๊ฒ๋ณด๋ค ์์ธ๋ฅผ ๋์ง๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ๐ ๊ฐ์ด ์์์ ๋ํ๋ด๊ธฐ ์ํด ํน์ ๋ฐํ ๊ฐ์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ค๋ฅ ์กฐ๊ฑด์ ๋ํ๋ด๊ธฐ ์ํด ํน์ ๋ฌธ์์ด์ด๋ ์์๋ฅผ ๋ฐํํฉ๋๋ค. ๐ null์ ๋ฐํํ๋ ๋์ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ํญ์ ์๋ฏธ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ย ๐ ๋ฉ์๋๊ฐ ํน์ ์ํฉ์์ null์ ๋ฐํํ ์ ์๋ ๊ฒฝ์ฐ ๋ฌธ์์ ์ด ๋์์ ๋ช ํํ๊ฒ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ ์ ์ฌ์ ์ธ null ๊ฐ์ ์ดํดํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ย ๐ null์ ํผํ ์ ์๋ ๊ฒฝ์ฐ Objects.requireNull ๋๋ ์กฐ๊ฑด๋ถ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํด์ ์์ ํ null ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ NullPointerException ์ํ์ ์ต์ํํฉ๋๋ค. ๐ ๋ง์ฝ null์ด ์๊ธฐ์น ์์ ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ๋ฅผ ๋ํ๋ด๋ ๊ฒฝ์ฐ, NullPointerException์ ํ์ฉํ์ฌ "Fail Fast" ์์น์ ๋ฐ์๋ค์ ๋๋ค. ์ด๋ ๊ฐ๋ฐ ์ค ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.ย ๐ ์ต์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, Kotlin์ nullable type ์ด๋ Swift์ optionals์ ๊ฐ์ด ๋ ์์ ํ ๋ ํธ๋ค๋ง ๊ธฐ๋ฅ์ ํ์ํฉ๋๋ค. ๋ฒ์ญ: [https://ducktopia.tistory.com/111] ์๋ฌธ: