[Book] ํด๋ฆฐ์ฝ”๋“œ - 9์žฅ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

2021. 1. 30. 15:31ยท๐Ÿ“ Book/โœ Clean Code

9์žฅ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

์ง€๋‚œ 1997๋…„๋งŒ ํ•ด๋„ TDD๋ผ๋Š” ๊ฐœ๋…์„ ์•„๋ฌด๋„ ๋ชฐ๋ž๊ณ  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ž€ ์ž๊ธฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ์•„๊ฐ„๋‹ค๋Š” ์‚ฌ์‹ค๋งŒ ํ™•์ธํ•˜๋Š” ์ผํšŒ์„ฑ ์ฝ”๋“œ์— ๋ถˆ๊ณผํ–ˆ๋‹ค.

ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณต๋“ค์—ฌ ๊ตฌํ˜„ํ•œ ํ›„ ์ž„์‹œ ์ฝ”๋“œ๋ฅผ ๊ธ‰์กฐํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ ๋Œ€๊ฐœ๋Š” ๊ฐ„๋‹จํ•œ ๋“œ๋ผ์ด๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•ด ์ž์‹ ์ด ์ง  ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋ˆˆ๋ถ€์‹  ์„ฑ์žฅ์„ ์ด๋ค˜๋‹ค.

๊ผฌ์น˜๊ผฌ์น˜ ๋”ฐ์ง€๋ฉฐ ์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ๋„๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ 
ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๊ณ 
ํ†ต๊ณผํ•œ ํ›„์—๋Š” ๋‚ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ๊ณต๊ฐœํ•˜๊ณ 
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์™€ ๋‚ด ์ฝ”๋“œ๋ฅผ ๊ฐ™์€ ์†Œ์Šค ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด ์ฒดํฌ์ธํ•œ๋‹ค.

์• ์ž์ผ๊ณผ TDD ๋•ํƒ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์ด๋ฏธ ๋งŽ์•„์กŒ์œผ๋ฉฐ ์ ์  ๋” ๋Š˜์–ด๋‚˜๋Š” ์ถ”์„ธ์ด๋‹ค.
ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ ๋ถ„์•ผ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ๊ธ‰ํ•˜๊ฒŒ ์„œ๋‘๋ฅด๋Š” ์™€์ค‘์— ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์ œ๋Œ€๋กœ ๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ข€ ๋” ๋ฏธ๋ฌ˜ํ•œ ์‚ฌ์‹ค์„ ๋†“์น˜๊ณ  ์žˆ๋‹ค.

 

1. TDD ๋ฒ•์น™ ์„ธ ๊ฐ€์ง€

TDD๋Š” ์‹ค์ œ ์ฝ”๋“œ๋ฅด ์งœ๊ธฐ ์ „์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ ์งœ๋ผ๊ณ  ์š”๊ตฌํ•œ๋‹ค.

 

  • ์ฒซ์งธ ๋ฒ•์น™: ์‹คํŒจํ•˜๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๊นŒ์ง€ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋‘˜์งธ ๋ฒ•์น™: ์ปดํŒŒ์ผ์€ ์‹คํŒจํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์‹คํ–‰์ด ์‹คํŒจํ•˜๋Š” ์ •๋„๋กœ๋งŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
  • ์…‹์งธ ๋ฒ•์น™: ํ˜„์žฌ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•  ์ •๋„๋กœ๋งŒ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

์œ„ ์„ธ ๊ฐ€์ง€ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์‹ค์ œ ์ฝ”๋“œ๋ณด๋‹ค ๋ถˆ๊ณผ ๋ช‡ ์ดˆ ์ „์— ๊ฑฐ์˜ ํ•จ๊ป˜ ๋‚˜์˜จ๋‹ค.

์ด๋ ‡๊ฒŒ ์ผํ•˜๋ฉด ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์‹ค์ƒ ์ „๋ถ€ ํ…Œ์ŠคํŠธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ

์‹ค์ œ ์ฝ”๋“œ์™€ ๋งž๋จน์„ ์ •๋„๋กœ ๋ฐฉ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์‹ฌ๊ฐํ•œ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

2. ๊นจ๋—ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์œ ์ง€ํ•˜๊ธฐ

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ฐ€๋…์„ฑ์ด๋‹ค.

๊ฐ€๋…์„ฑ์€ ์‹ค์ œ ์ฝ”๋“œ๋ณด๋‹ค ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๋”๋”์šฑ ์ค‘์š”ํ•˜๋‹ค.

 

๊ฐ€๋…์„ฑ์„ ๋†’์ด๋ ค๋ฉด? ๋ช…๋ฃŒ์„ฑ, ๋‹จ์ˆœ์„ฑ, ํ’๋ถ€ํ•œ ํ‘œํ˜„๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค.

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์ตœ์†Œ์˜ ํ‘œํ˜„์œผ๋กœ ๋งŽ์€ ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ๋ณธ๋ก ์— ๋Œ์ž…ํ•ด ์ง„์งœ ํ•„์š”ํ•œ ์ž๋ฃŒ ์œ ํ˜•๊ณผ ํ•จ์ˆ˜๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์žก๋‹คํ•˜๊ณ  ์„ธ์„ธํ•œ ์ฝ”๋“œ๋Š” ๊ฑฐ์˜ ๋‹ค ์—†์•ค๋‹ค.

 

3. ํ…Œ์ŠคํŠธ ๋‹น assert ํ•˜๋‚˜

assert ๋ฌธ์ด ๋‹จ ํ•˜๋‚˜์ธ ํ•จ์ˆ˜๋Š” ๊ฒฐ๋ก ์ด ํ•˜๋‚˜๋ผ์„œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๋น ๋ฅด๋‹ค.

 

4. ํ…Œ์ŠคํŠธ ๋‹น ๊ฐœ๋… ํ•˜๋‚˜

์ด๊ฒƒ์ €๊ฒƒ ์žก๋‹คํ•œ ๊ฐœ๋…์„ ์—ฐ์†์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธด ํ•จ์ˆ˜๋Š” ํ”ผํ•œ๋‹ค.

ํ•œ ํ•จ์ˆ˜๋กœ ๋ชฐ์•„๋„ฃ์œผ๋ฉด ๋…์ž๊ฐ€ ๊ฐ ์ ˆ์ด ๊ฑฐ๊ธฐ์— ์กด์žฌํ•˜๋Š” ์ด์œ ์™€ ๊ฐ ์ ˆ์ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฐœ๋…์„ ๋ชจ๋‘ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

 

5. F.I.R.S.T

  • Fast(๋น ๋ฅด๊ฒŒ): ํ…Œ์ŠคํŠธ๋Š” ๋นจ๋ฆฌ ๋Œ์•„์•ผ ํ•œ๋‹ค๋Š” ๋ง์ด๋‹ค.
    • ํ…Œ์ŠคํŠธ๊ฐ€ ๋А๋ฆฌ๋ฉด ์ž์ฃผ ๋Œ๋ฆด ์—„๋‘๋ฅผ ๋ชป ๋‚ธ๋‹ค.
    • ์ž์ฃผ ๋Œ๋ฆฌ์ง€ ์•Š์œผ๋ฉด ์ดˆ๋ฐ˜์— ๋ฌธ์ œ๋ฅผ ์ฐพ์•„๋‚ด๊ธฐ ์–ด๋ ต๋‹ค.
    • ๊ฒฐ๊ตญ ์ฝ”๋“œ ์ •๋ฆฌ๋ฅผ ๋งˆ์Œ๊ป ํ•˜์ง€ ๋ชปํ•ด ์ฝ”๋“œ ํ’ˆ์งˆ์ด ๋ง๊ฐ€์ง„๋‹ค.
  • Independent(๋…๋ฆฝ์ ์œผ๋กœ): ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ๋‹ค์Œ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋  ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
    • ๊ฐ ํ…Œ์ŠคํŠธ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์ˆœ์„œ๋กœ ์‹คํ–‰ํ•ด๋„ ๊ดœ์ฐฎ์•„์•ผ ํ•œ๋‹ค.
    • ๋…๋ฆฝ์ ์ด์ง€ ์•Š์œผ๋ฉด ์‹คํŒจ์˜ ์›์ธ์„ ์ฐพ๊ธฐ ์–ด๋ ค์›Œ์ง€๋ฉฐ ํ›„๋ฐ˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์ฐพ์•„๋‚ด์•ผ ํ•  ๊ฒฐํ•จ์ด ์ˆจ๊ฒจ์ง„๋‹ค.
  • Repeatable(๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜๊ฒŒ): ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋„ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.
    • ์‹ค์ œ ํ™˜๊ฒฝ, QA ํ™˜๊ฒฝ, ๋„คํŠธ์›Œํฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ ๋“ฑ
  • Self-Validating(์ž๊ฐ€ ๊ฒ€์ฆํ•˜๋Š”): ํ…Œ์ŠคํŠธ๋Š” Bool ๊ฐ’์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด์•ผ ํ•œ๋‹ค.
    • ์„ฑ๊ณต ์•„๋‹ˆ๋ฉด ์‹คํŒจ์ด๋‹ค. ์ด ๋‘ ๊ฐœ๋กœ ๊ฐ€๋Š ๋˜์ง€ ์•Š์œผ๋ฉด ํŒ๋‹จ์€ ์ฃผ๊ด€์ ์ด ๋˜๋ฉฐ ์ง€๋ฃจํ•œ ์ˆ˜์ž‘์—… ํ‰๊ฐ€๊ฐ€ ๋œ๋‹ค.
    • ํ†ต๊ณผ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค๊ณ  ๋กœ๊ทธ ํŒŒ์ผ์„ ์ฝ๊ฒŒ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
    • ํ†ต๊ณผ ์—ฌ๋ถ€๋ฅผ ๋ณด๋ ค๊ณ  ํ…์ŠคํŠธ ํŒŒ์ผ ๋‘ ๊ฐœ๋ฅผ ์ˆ˜์ž‘์—…์œผ๋กœ ๋น„๊ตํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์„œ๋„ ์•ˆ ๋œ๋‹ค.
  • Timely(์ ์‹œ์—): ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ง์ „์— ๊ตฌํ˜„ํ•œ๋‹ค.
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Book/โœ Clean Code' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Book] ํด๋ฆฐ์ฝ”๋“œ - 11์žฅ ์‹œ์Šคํ…œ
  • [Book] ํด๋ฆฐ์ฝ”๋“œ - 10์žฅ ํด๋ž˜์Šค
  • [Book] ํด๋ฆฐ์ฝ”๋“œ - 8์žฅ ๊ฒฝ๊ณ„
  • [Book] ํด๋ฆฐ์ฝ”๋“œ - 7์žฅ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[Book] ํด๋ฆฐ์ฝ”๋“œ - 9์žฅ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”