Skip to content

Latest commit

ย 

History

History
59 lines (49 loc) ยท 3.08 KB

File metadata and controls

59 lines (49 loc) ยท 3.08 KB

Transformation

  • transformation์€ refactoring๊ณผ ๋Œ€์‘ ๊ด€๊ณ„(counterpart)์— ์žˆ๋‹ค.
    • refactoring์ด ํ–‰์œ„์˜ ๋ณ€๊ฒฝ ์—†์ด ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์Šค ์ฝ”๋“œ์— ์ž‘์€ ๋ณ€๊ฒฝ์„ ํ•œ๋‹ค๋ฉด,
    • transformation์€ ๋ฐ˜๋Œ€๋กœ ๊ตฌ์กฐ์˜ ๋ณ€๊ฒฝ ์—†์ด ํ–‰์œ„๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์Šค ์ฝ”๋“œ์— ์ž‘์€ ๋ณ€๊ฒฝ์„ ๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ป๊ธฐ ์œ„ํ•œ ์šฐ์„  ์ˆœ์œ„ ์กด์žฌ
    • transformation์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ž˜ ์ ์šฉํ•˜๋ฉด ๋ณด๋‹ค ๋‚˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ ์คŒ
    • ์ค‘์š”ํ•œ ๊ตฌํ˜„์„ ๋ฏธ๋ฃจ๋Š” ๊ฒƒ์ด ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•ˆ๋‚ดํ•จ(ex. guard clause)

transformation์ด TDD์˜ RGB ์ค‘ ์–ด๋””์— ์ ํ•ฉํ• ๊นŒ ?

  • ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์„ฑ๊ณต์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ Red, Transform to Green, Refactor...

  • ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๊ตฌ์กฐ๋Š” ์œ ์ง€ํ•œ์ฑ„ ์„ฑ๊ณต์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ–‰์œ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋‹ค. - transformation

  • ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด ํ–‰์œ„๋ฅผ ์œ ์ง€ํ•œ์ฑ„ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•œ๋‹ค. - refactoring

  • ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์„ฑ๊ณต์‹œํ‚ค๋Š”๋ฐ ์ ์šฉ๋˜๋Š” ๊ทœ์น™

    As the tests get more specific, the code gets more generic

  • ๊ทธ๋Ÿผ transformation์€ ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ด๋™์‹œํ‚ค๋‚˜ ?

    • transformation์€ ํ…Œ์ŠคํŠธ๋ฅผ ์„ฑ๊ณต์‹œํ‚ค๋Š”๋ฐ ์‚ฌ์šฉ๋จ
    • transformation๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค generalํ•˜๊ฒŒ ํ•จ
    • transformation์€ generalizer์ž„

      Transformation์€ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์€์ฑ„ ํ–‰์œ„๋ฅผ ์ผ๋ฐ˜ํ™”(generalize)ํ•˜๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ž‘์€ ๋ณ€๊ฒฝ์ด๋‹ค. transformation์€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์—†์ด ํ–‰์œ„๋ฅผ ์ผ๋ฐ˜ํ™”ํ•œ๋‹ค.```

Rule

  • {} โ†’ Nil
    • ์•„๋ฌด ์ฝ”๋“œ๊ฐ€ ์—†๋Š” ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•จ
      • ๊ฐ€์žฅ ํ‡ดํ™”ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑ
      • ์ปดํŒŒ์ผ์ด ๋˜์ง€๋งŒ ์‹คํŒจํ•ด์•ผ ํ•จ
      • SUT์—์„œ null์„ ๋ฐ˜ํ™˜
  • Nil โ†’ Constant
    • ํ˜„์žฌ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๋„๋ก ์ƒ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
  • Constant โ†’ Variable
    • Triangulate๋ฅผ ํ•˜๋ฉด Constant๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ฌ ์ˆ˜ ์—†๊ฒŒ ๋จ
    • ์ด๋Ÿฌํ•œ ๋ณ€ํ™˜๋“ค์ด ๊ณ„์† ๋งค์šฐ ๊ตฌ์ฒด์ ์ธ ์ƒํƒœ์—์„œ ์‚ด์ง ๋” ์ผ๋ฐ˜์ ์ธ ์ƒํƒœ๋กœ ์˜ฎ๊น€
    • ์ด๋Ÿฐ ๋ณ€ํ™˜์€ ๋ชจ๋‘ ์ผ๋ฐ˜ํ™”, ์ฆ‰ ์ฝ”๋“œ๊ฐ€ ์ด์ „๋ณด๋‹ค ๋” ๋‹ค์–‘ํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž„
  • Unconditional โ†’ Selection
    • ์กฐ๊ฑด๋ฌธ(if) ์ถ”๊ฐ€
  • Value โ†’ List
    • one to many
  • Selection โ†’ Iteration
    • if โ†’ while
  • Statement โ†’ Recursion
    • ๋ฐ˜๋ณต๋ฌธ ๋Œ€์‹  ๋ช…๋ น๋ฌธ์„ ์žฌ๊ท€ ๋ช…๋ น๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝ
    • ์žฌ๊ท€ ์™ธ์—๋Š” ๋ณ„๋„ ๋ฐ˜๋ณต ๊ธฐ๋Šฅ์ด ์—†๋Š” ๊ฒฝ์šฐ์— ํŠนํžˆ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ์Œ
  • Value โ†’ Mutated Value
    • ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝ
      • ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋ถ€๋ถ„๊ฐ’๋“ค์„ ๋ชจ์œผ๊ฑฐ๋‚˜ ์ ์ง„์ ์ธ ๊ณ„์‚ฐ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋จ

๋น„๊ณ 

  • ๋‘˜ ์ด์ƒ์˜ ๋ณ€ํ™˜์„ ์กฐํ•ฉํ•ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๊ณ  ์‹ถ์€ ์ƒ๊ฐ์ด ๋“ ๋‹ค๋ฉด ?
    • ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋น ํŠธ๋ฆฐ ๊ฒƒ์„ ์ˆ˜ ์žˆ์Œ
    • ํ•˜๋‚˜์˜ ๋ณ€ํ™˜๋งŒ ์‚ฌ์šฉํ•ด์„œ ํ†ต๊ณผ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ฐพ์•„๋ณด๋ผ
    • ์„ ํƒ์„ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ณ€ํ™˜์„ ์ทจํ•˜๋ผ
  • ์ˆœ์„œ๋Œ€๋กœ ๋ณ€ํ™˜์„ ์ ์šฉํ•˜๋‹ค ๋ณด๋ฉด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ํ•ด๋ฒ•์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋จ