Nunit: Guard ํด๋ž˜์Šค์˜ ๋‹จ๊ณ„์  ํ์ง€

์— ๋งŒ๋“  2018๋…„ 09์›” 24์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nunit/nunit

ReSharper ๋ฐ (์ตœ๊ทผ) Visual Studio๋Š” ArgumentNullException ์‚ฝ์ž… ๋ฐ ์œ ์‚ฌํ•œ ์ธ์ˆ˜ ๊ฒ€์‚ฌ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์šฐ์—ฐํžˆ ์—ฌ๋Ÿฌ ๋ฒˆ ์†Œ๊ฐœํ–ˆ์„ ์ •๋„๋กœ ๊ทผ์œก ๊ธฐ์–ต๋ ฅ์ž…๋‹ˆ๋‹ค.

์ง์ ‘ ๋˜์ง€๋Š” ๊ฒƒ์€ ํ๋ฆ„ ์ œ์–ด ๋ถ„์„์˜ ๊ด€์ ์—์„œ ๋ณด๋‹ค ๊ด€์šฉ์ ์ธ C#์ž…๋‹ˆ๋‹ค. C # ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‹น์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์Šค์œ„์น˜ ์ผ€์ด์Šค์—์„œ ์‚ฌ์šฉ์ด๋‚˜ ํœด์‹ํ•˜๊ธฐ ์ „์— ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™” ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค ๊ฒƒ์„ ์ดํ•ด throw ๋ณด๋‹ค๋Š” Guard . ReSharper์˜ null ํ๋ฆ„ ๊ฒ€์‚ฌ๋„ ๋™์ผํ•œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ C# 7.0์—์„œ๋Š” throw ์‹์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด _foo = foo ?? throw new ArgumentNullException(nameof(Foo)); ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ธฐ๊ณ ์ž์™€ ์šฐ๋ฆฌ ์ž์‹ ์ด Guard๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์ง์ ‘ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ€๋“œ ํด๋ž˜์Šค๋ฅผ ์ข‹์•„ํ•˜์ง€๋งŒ ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ์„ฑ ๋ฌธ์ œ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๋ฐ˜ ๊ธฐ์—ฌ์ž์—๊ฒŒ ์ œ์•ˆํ•˜์ง€๋งŒ ์ผํšŒ์„ฑ ๊ธฐ์—ฌ์ž์—๊ฒŒ๋Š” ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ํŠนํžˆ ์ผ๊ด€์„ฑ์ด ํ•„์š”ํ•œ ์˜์—ญ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ? ์žˆ์„ ๋•Œ ๋ณด๋ฉด ๊ธฐ์˜์ง€๋งŒ ์—†์„ ๋•Œ๋Š” ๊ฑฑ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ์— ์ƒ๋‹นํžˆ ๋ฌด๊ด€์‹ฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  ์ €์—๊ฒŒ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š

๋ชจ๋“  4 ๋Œ“๊ธ€

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ธฐ์–ตํ•œ๋‹ค๋ฉด Guard ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์žฅ์ ์€ ์‚ฌ์šฉ์˜ ์šฉ์ด์„ฑ์ž…๋‹ˆ๋‹ค. C# ์ธ์‹ IDE์—์„œ๋Š” ๋” ์ด์ƒ ์ €๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ์—ฌ์ž์—๊ฒŒ ๊ฐ€์žฅ ์‰ฌ์šด ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์ผ๊ด€์„ฑ์€ ์šฐ๋ฆฌ ์ค‘ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๊ฐ€์žฅ ์‰ฌ์šด ๊ฒƒ๊ณผ (์ž ์žฌ์ ์œผ๋กœ) ์šฐ๋ฆฌ ์ค‘ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ์‰ฌ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ€๋“œ ํด๋ž˜์Šค๋ฅผ ์ข‹์•„ํ•˜์ง€๋งŒ ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ์„ฑ ๋ฌธ์ œ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๋ฐ˜ ๊ธฐ์—ฌ์ž์—๊ฒŒ ์ œ์•ˆํ•˜์ง€๋งŒ ์ผํšŒ์„ฑ ๊ธฐ์—ฌ์ž์—๊ฒŒ๋Š” ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ํŠนํžˆ ์ผ๊ด€์„ฑ์ด ํ•„์š”ํ•œ ์˜์—ญ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ? ์žˆ์„ ๋•Œ ๋ณด๋ฉด ๊ธฐ์˜์ง€๋งŒ ์—†์„ ๋•Œ๋Š” ๊ฑฑ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ์— ์ƒ๋‹นํžˆ ๋ฌด๊ด€์‹ฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  ์ €์—๊ฒŒ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š

๋‚˜ ์—ญ์‹œ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋‹ค์†Œ ๋ƒ‰๋‹ดํ•˜๋‹ค. ์˜ˆ์™ธ ์ƒ์„ฑ์ž์˜ ์ผ๊ด€์„ฑ๊ณผ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€๋งŒ(์ €๋Š” ๋ฉ”์‹œ์ง€์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๊ฑฐ๊พธ๋กœ ๋ช‡ ๋ฒˆ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค), ํ˜ธ์ถœ ์Šคํƒ์— ์ถ”๊ฐ€ ๋ฉ”์†Œ๋“œ๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ง์”€ํ•˜์‹  ๋Œ€๋กœ ์ƒˆ๋กœ์šด C# ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

๋„๋งค ํผ์ง€๊ฐ€ ํ•„์š”ํ•œ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์š”๊ตฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰