Community

๐Ÿ•Š๏ธ ํด๋ฆฐ ์ฝ”๋“œ: 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] ์›๋ฌธ:

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค