how-to-handle-null
#tip
null ์ ์ฐ๋ ๋ฒ 1
null์ ํตํด ์ ์ฐํ ๋ฉ์๋๋ฅผ ๋ง๋ค์ง ๋ง๊ณ , ๋ช ์์ ์ธ ๋ฉ์๋๋ฅผ ๋ง๋ค๋๋ก.
null์ ๋ฐํํ์ง ๋ง๋ผ
๋ฐํ ๊ฐ์ด ๊ผญ ์์ด์ผํ๋๋ฐ null์ด๋ฉด ์์ธ๋ฅผ ๋์ง๊ฒ ํ๊ณ ,
๋น ๋ฐํ๊ฐ์ ๋น ์ปฌ๋ ์ ์ด๋ ํน์ Null ๊ฐ์ฒด (๋น ๊ฐ์ฒด์ง๋ง Null ๋์ฉ์ผ๋ก ์ฌ์ฉ๋๋)
๋ฐํ ๊ฐ์ด ์์ ์๋ ์์ผ๋ฉด Optional์ ๋ฐํ.
null ์ ์ฐ๋ ๋ฒ 2
Design By Contract
require + __ + ensure
๋ฉ์๋๊ฐ ์คํ๋๊ธฐ ์ ์ ๋ง์กฑ๋์ด์ผ ํ๋ ๋ถ๋ถ + ๋ก์ง ์คํ + ๋ก์ง ์คํ ํ์, ๋ง์กฑ๋์ด์ผํ๋ ๋ถ๋ถ
์ด๋ฐ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ๋ฉด, ํ์ง์ ๋ณด์ฅํ ์ ์์.
์ฆ ์ด๊ฑธ null์ ๋์ ํด๋ณด๋ฉด,
๋ณดํธ์ ์๋ ๋จ์ ๋ฌธ, Objects์์ ์ ๊ณตํด์ฃผ๋ ๋ฉ์๋..๋ฑ์ ์ฌ์ฉํ ์ ์์.
Assert, Preconditions.. ํด๋์ค๋ค๋ ์ฌ์ฉํด๋ณผ ์ ์๊ฒ ๋ค.
์ฆ ์ฌ์ ์กฐ๊ฑด์ ํ์คํ ์ง์ผ๋ผ
null ์ ์ฐ๋ ๋ฒ 3
null์ ๋ฒ์๋ฅผ ์ขํ๋ผ
์ฆ ํด๋์ค๋ ๋ฉ์๋ ๋ด๋ถ์์๋ง ์ฌ์ฉํ๋๋ก.
๊ทธ๋ฆฌ๊ณ ๊ทธ ํด๋์ค๋ ๋ฉ์๋๋ฅผ ์๊ฒ ๋ง๋ค๋ฉด ๋จ.
JSR 308
@NonNull
,@Nullable
๋ฑ ์ปดํ์ผ ํ์์์ ์ฒดํฌํ ์ ์๋๋ก..Automatic type refinement
์ ๋ฆฌ
JSR 305, JSR 308 ์ฐ์
Checker Framework
์ฐธ๊ณ
https://www.youtube.com/watch?v=vX3yY_36Sk4&t=954
https://www.oracle.com/technical-resources/articles/java/ma14-architect-annotations.html
Last updated