Community

๊ฐœ๋ฐœ์ž 99% ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ˆ˜๋‹ค ๋–จ์–ด์š”!

โ† Go back
๐Ÿ“š๋…ธ๋งˆ๋“œ ๊ฐœ๋ฐœ์ž ๋ถํด๋Ÿฝ '์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ'(1๊ธฐ) 6์ผ์ฐจ
โ€ข#pragmaticโ€ข
2๋…„ ์ „
โ€ข
655
โ€ข

์˜ค๋Š˜ TIL 3์ค„ ์š”์•ฝ

  • ๋‚ด๊ฐ€ ์™„๋ฒฝํ•œ ์ฝ”๋“œ๋ฅผ ์งค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ๋ผ.

  • ํด๋ผ์ด์–ธํŠธ, ์ฝ”๋“œ ์„ค๊ณ„ ๋“ฑ์— ๊ณ„์•ฝ์„ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋œ๋‹ค.

  • ๋ชจ๋“  ์ฝ”๋“œ๋“ค์€ ํ”ผ๋“œ๋ฐฑ์„ ํ•ด๊ฐ€๋ฉฐ ์‹ ์ค‘ํ•˜๊ฒŒ ์งœ๋ผ.

TIL (Today I Learned) ๋‚ ์งœ

2022.03.24

์˜ค๋Š˜ ์ฝ์€ ๋ฒ”์œ„

  1. ์‹ค์šฉ์ฃผ์˜ ํŽธ์ง‘์ฆ

์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์จ๋ณด์„ธ์š”.

  • ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ž๊ธฐ ์ž์‹  ์—ญ์ง€ ๋ฏฟ์ง€ ์•Š๋Š”๋‹ค. ์–ด๋Š ๋ˆ„๊ตฌ๋„, ์‹ฌ์ง€์–ด๋Š” ์ž๊ธฐ ์ž์‹ ๋„ ์™„๋ฒฝํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์Œ์„ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ž์‹ ์˜ ์‹ค์ˆ˜์— ๋Œ€๋น„ํ•œ ๋ฐฉ์–ด์ฑ…์„ ๋งˆ๋ จํ•œ๋‹ค.

  • DBC(Design By Contract) - ๊ณ„์•ฝ์— ์˜ํ•œ ์„ค๊ณ„. ํ”„๋กœ๊ทธ๋žจ์˜ ์ •ํ™•์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋“ˆ์˜ ๊ถŒ๋ฆฌ์™€ ์ฑ…์ž„์„ ๋ฌธ์„œํ™”ํ•˜๊ณ  ํ•ฉ์˜ํ•˜๋Š” ๋ฐ์— ์ดˆ์ ์„ ๋งž์ถค

    • ์„ ํ–‰์กฐ๊ฑด(precondition) - ๋ฃจํ‹ด์ด ํ˜ธ์ถœ๋˜๊ธฐ ์œ„ํ•ด ์ฐธ์ด์–ด์•ผ ํ•˜๋Š” ๊ฒƒ(๋ฃจํ‹ด์˜ ์š”๊ตฌ ์‚ฌํ•ญ)

    • ํ›„ํ–‰ ์กฐ๊ฑด(postcondition) - ๋ฃจํ‹ด์ด ์ž๊ธฐ๊ฐ€ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ณด์žฅํ•˜๋Š” ๊ฒƒ(๋ฃจํ‹ด์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์„ธ์ƒ์˜ ์ƒํƒœ)

    • ํด๋ž˜์Šค ๋ถˆ๋ณ€์‹(class invariant) - ๋ฃจํ‹ด์˜ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ ๋„์ค‘์—๋Š” ๋ถˆ๋ณ€์‹์ด ์ฐธ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ฃจํ‹ด์ด ๋๋‚˜๊ณ  ํ˜ธ์ถœ์ž๋กœ ์ œ์–ด๊ถŒ์ด ๋ฐ˜ํ™˜๋˜๋Š” ์‹œ์ ์—๋Š” ๋ถˆ๋ณ€์‹์ด ์ฐธ์ด ๋˜์–ด์•ผ ํ•จ.

    • ์œ ํšจํ•œ ์ž…๋ ฅ ๋ฒ”์œ„, ๊ฒฝ๊ณ„ ์กฐ๊ฑด, ๋ฃจํ‹ด์ด ์ „๋‹ฌํ•  ๊ฒƒ, ์•ฝ์†ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๋“ฑ์„ ๋‚˜์—ดํ•˜๋ฉด ๋„์›€์ด ๋จ.

  • ๊ฒŒ์œผ๋ฆ„๋ฑ…์ด ์ฝ”๋“œ - ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ž์‹ ์ด ์ˆ˜์šฉํ•  ๊ฒƒ์€ ์—„๊ฒฉํ•˜๊ฒŒ ํ™•์ธํ•˜๊ณ , ๋‚ด์–ด ์ค„ ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ์ตœ์†Œํ•œ๋„๋ฅผ ์•ฝ์†ํ•˜๋Š” ๊ฒƒ.

  • ๋ฌธ์ œ๋ฅผ ์ฐพ๊ณ  ์›์ธ์„ ๋ฐํžˆ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‚ฌ๊ณ ๊ฐ€ ๋‚œ ์ง€์ ์—์„œ ์ผ์ฐ ๋ฉˆ์ถ”๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃฝ์€ ํ”„๋กœ๊ทธ๋žจ์ด ๋ผ์น˜๋Š” ํ”ผํ•ด๋Š” ์ด์ƒํ•œ ์ƒํƒœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋ผ์น˜๋Š” ํ”ผํ•ด๋ณด๋‹ค ํ›จ์‹  ์ ์€ ๋ฒ•์ด๋‹ค.

  • "์ž์‹ ์ด ์‹œ์ž‘ํ•œ ๊ฒƒ์€ ์ž์‹ ์ด ๋๋‚ด๋ผ." - ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฃจํ‹ด์ด ํ•ด์ œ ์—ญ์‹œ ์ฑ…์ž„์ ธ์•ผ ํ•œ๋‹ค.

  • "์ž‘์€ ๋‹จ๊ณ„๋“ค์„ ๋ฐŸ์•„๋ผ. ์–ธ์ œ๋‚˜." - ์–ธ์ œ๋‚˜ ์‹ ์ค‘ํ•˜๊ฒŒ ์ž‘์€ ๋‹จ๊ณ„๋“ค์„ ๋ฐŸ์•„๋ผ. ๋” ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ํ”ผ๋“œ๋ฐฑ์„ ํ™•์ธํ•˜๊ณ  ์กฐ์ •ํ•˜๋ผ. ํ”ผ๋“œ๋ฐฑ์˜ ๋นˆ๋„๋ฅผ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ œํ•œ ์†๋„๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ผ.

์˜ค๋Š˜ ์ฝ์€ ์†Œ๊ฐ์€? ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ ์–ด๋ณด์„ธ์š”

  • ์˜ค๋Š˜์€ ์ฑ…์„ ์ฝ๋Š”๋ฐ ์™œ์ธ์ง€ ์ง‘์ค‘๋ ฅ์ด ์ž๊พธ ๋–จ์–ด์กŒ๋‹ค. ์ฒ˜์Œ ์ ‘ํ•ด๋ณด๋Š” ๊ฐœ๋…๋“ค๊ณผ ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ์–ธ์–ด์˜ ์ฝ”๋“œ๋“ค์ด ๋งŽ์ด ๋‚˜์™€์„œ ๊ทธ๋Ÿฐ๋“ฏํ•˜๋‹ค.

  • ๊ณ„์•ฝ์— ์˜ํ•œ ์„ค๊ณ„(DBC)๋Š” ์ •๋ง ์ฒ˜์Œ ์•Œ๊ฒŒ๋˜๋Š” ๊ฐœ๋…์ธ๋ฐ ๊ทธ ๋‚ด์šฉ์ด ์‰ฌ์šด ๋“ฏ ํ•˜๋ฉด์„œ๋„ ๋ชจํ˜ธํ•ด์„œ 100% ์•Œ๊ฒŒ๋œ ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š๋‹ค. ์•ž์œผ๋กœ ์ฝ”๋“œ ์„ค๊ณ„ ๊ฒฝํ—˜์„ ๋” ์Œ“์€ ํ›„์— ์ฑ…์„ ๋‹ค์‹œ ๋ณด๋ฉด ์ด๊ฒŒ ๊ทธ ๋‚ด์šฉ์ด๊ตฌ๋‚˜! ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

  • ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฒ„๋ฆ‡์ฒ˜๋Ÿผ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ์ด ์ฑ•ํ„ฐ์—์„œ๋Š” ํด๋ฆฐ ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋Š” ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ›์œผ๋ฉด์„œ ์ •๋ง ์ฝ”๋“œ ๋‹ค์šด ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ์‹ถ๋‹ค.