๐ŸŠ[์ •๊ธ€์ผ์ง€] ์ฝ”๋“œ ๋ฆฌ๋ทฐ

์ด๊ฐ•์šฑยท2022๋…„ 10์›” 26์ผ
2

๐ŸŠ ์ •๊ธ€์ผ์ง€

๋ชฉ๋ก ๋ณด๊ธฐ
5/8

์ฝ”๋“œ๋ฆฌ๋ทฐ

ํ•˜๋ฉด ์ข‹์€๊ฒŒ ์•„๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ํ•„์ˆ˜ ์š”์†Œ.
pull request์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ๋ฆฌ๋ทฐ ๊ณผ์ •์ด ์žˆ์œผ๋ฉด ์ฝ๋Š”์‚ฌ๋žŒ์„ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ์งœ๊ฒŒ ๋จ.

์ˆ˜์ • ์ œ์•ˆ/์ œ์•ˆํ•œ ์ด์œ /๋ ˆํผ๋Ÿฐ์Šค

์ฝ”๋“œ๋ฆฌ๋ทฐ๋Š” ํŒ€์›.
๊ฑด์„ค์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”. ๊ฐœ๋ฐœ์ž๋„ ์‚ฌ๋žŒ.

๊ตฌ๊ธ€ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ

์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๋ฅผ ์ง€ํ‚ค๋Š” ๋ฐฉ๋ฒ•.

  1. ์ฝ”๋“œ๋ฆฌ๋ทฐ
  2. ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉ
  3. ์–ธ์–ด ์ „๋ฌธ๊ฐ€, ํ”„๋กœ์ ํŠธ ์˜ค๋„ˆ (Readability & ownership)๊ฐ€ ํ”ผ๋“œ๋ฐฑ

Testing

Testing rocks, Debug sucks!

  • ๋””๋ฒ„๊น…์€ ๋ณดํ†ต ๋ฌธ์ œ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์—„์ฒญ ์˜ค๋ž˜ ๊ฑธ๋ฆผ.
  • ํ…Œ์ŠคํŒ…์€ ์ƒˆ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์—์„œ๋„ ๊ฒฐํ•จ์„ ๊ฒ€์ถœํ•  ์ˆ˜ ์žˆ์Œ.
  • ํ…Œ์ŠคํŒ…์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹ค์ œ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—(๋งŒ๋“ค๊ณ  ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—), ์œ ์ง€๋ณด์ˆ˜ ๋ถ€๋‹ด์„ ์ค„์ธ๋‹ค.

test driven development(TDD) : test๊ฐ€ ๊ธฐ๋ณธ์ด๋‹ค!

  • ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๊ตฌํ˜„๋ฅผ ๋ถ„๋ฆฌ.

  • ํ…Œ์ŠคํŠธ๋Š” ์‹คํ–‰๊ฐ€๋Šฅํ•œ ๋ฌธ์„œ๋‹ค.

  • ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ•˜๊ธฐ ์ „ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ถ€ํ„ฐ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ (test driven).

  • ๋‚ด ์†์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ž˜ ์งœ์˜€๋Š”์ง€ ํ™•์ธํ•˜์ง€๋ง๊ณ  ๊ธฐ๊ณ„์—๊ฒŒ ์‹œ์ผœ๋ผ!

Testing vs Debug

Testing

  • ๊ตฌํ˜„ํ•˜๊ธฐ ์ „ ํ˜น์€ ๊ฐœ๋ฐœ ๊ณผ์ • ์ค‘์—,
  • ์š”๊ตฌ์‚ฌํ•ญ(๊ธฐ๋Œ€๊ฐ’, ๋ฐ”๋žŒ์งํ•œ ํ–‰๋™)์— ๋Œ€ํ•œ ๋ช…์„ธ์™€
  • ๊ทธ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ž˜ ๋„์ถœ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณผ์ •
  • ๋‹จ์œ„ ๋ณ„(e.g. ํ•จ์ˆ˜ ๋ณ„)๋กœ ๊ฒ€์‚ฌ

"์ด๋Ÿฐ ์ธํ’‹์—์„œ๋Š” ์ด๋Ÿฐ ์•„์›ƒํ’‹์ด ๋‚˜์™€์•ผํ•ด ๋ผ๋Š” ๋ช…์„ธ๋ฅผ ๊ธฐ์ˆ "
"๊ธฐ๋Œ€ํ•˜๋Š” ํ–‰๋™์„ ํ…Œ์ŠคํŠธ๋กœ ๊ธฐ์ˆ ํ•œ ๋‹ค์Œ ์ฝ”๋“œ๋กœ ์งœ๊ณ  ์˜ˆ์ƒํ–ˆ๋˜๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด๋Š” ๊ฒƒ"
"์–ด์จ‹๋“  ์ค‘์š”ํ•œ ๊ฑด ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์ „(mainํ•จ์ˆ˜์˜ ๊ด„ํ˜ธ๋„ ์—ด๊ธฐ ์ „)์— ํ…Œ์ŠคํŠธ๋ฅผ ๋งŽ์ด ์งœ๋†“๊ณ  ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ "
(RB-tree ๊ตฌํ˜„ ๊ณผ์ œ๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด test-rbtree.c ๊ฐ€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ.
๊ทธ๊ฑธ ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๊ฒƒ์ด ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ณ , rbtree.c์™€ ํ•จ๊ป˜ ์ปดํŒŒ์ผํ•ด์„œ ๋Œ๋ ค๋ณด๋Š” ๊ฒƒ์ด ํ…Œ์ŠคํŠธ.)

Debug

  • ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„ ์‹คํ–‰์„ ํ•˜๋‹ค๊ฐ€ ๋ญ”๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ,
  • ์ „์ฒด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒ€์‚ฌ
  • ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„์„ ์ฐพ์•„์„œ ํŒŒ๊ณ  ๋“ค์–ด๊ฐ.

Refactoring

sw ๋™์ž‘์„ ๋ฐ”๊พธ์ง€ ์•Š์œผ๋ฉด์„œ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ.
์ฆ‰, ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ์ž˜ ์ •ํ•ด์ง„ ๊ทœ์ •๋Œ€๋กœ ์ˆ˜์ •ํ•˜๋Š” ๊ธฐ์ˆ .

profile
I think I think too much.

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2022๋…„ 10์›” 31์ผ

LGTM

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ