๊ฐœ๋ฐœ.log

๋ฐฑ์—”๋“œ, ์ข‹์€ ์ฝ”๋“œ๋ž€ ๋ฌด์—‡์ผ๊นŒ? ํด๋ฆฐ์ฝ”๋“œ?

๊ฐœ๋ฐœํ•˜๋Š” ์ฃผ๋””์”จ 2023. 10. 10. 13:48

 

 

์ข‹์€ ์ฝ”๋“œ๊ฐ€ ๋„๋Œ€์ฒด ๋ญ์ง€?

‘์ข‹์€ ์ฝ”๋“œ๋ž€?‘์ด๋ผ๊ณ  ๊ตฌ๊ธ€๋งํ•ด๋ณด๋ฉด ๋งŽ์€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. ๋‚˜๋„ ๊ทธ๋ ‡๊ณ  ๋‹ค๋“ค ๊ถ๊ธˆํ–ˆ๋˜๋“ฏํ•˜๋‹ค. ‘์ข‹์€ ์ฝ”๋“œ’๋ž€ ๋…€์„์€ ์ •์ฒด๋„, ์‹ค์ฒด๋„ ์—†์ด ์ด ์„ธ์ƒ์— ๋– ๋Œ๊ณ  ์žˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ‘์ข‹์€ ์ฝ”๋“œ’์˜ ๊ธฐ์ค€์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๊ณ  ๊ฐ๊ฐ์˜ ๊ฒฝํ—˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค. ์„ธ๊ฐ„์— ์ข‹์€ ์ฝ”๋“œ์˜ ์ •์˜๋Š” ์ •๋ง ๋งŽ๋‹ค.

  • ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ
  • ์ค‘๋ณต์ด ์—†๋Š” ์ฝ”๋“œ
  • ํ…Œ์ŠคํŠธ๊ฐ€ ์šฉ์ดํ•œ ์ฝ”๋“œ
  • ๋“ฑ๋“ฑ…

 

์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ?

์ด ์ œ๋ชฉ์˜ ์ฑ…๋„ ์žˆ๋‹ค. ์ œ๋ชฉ ๊ทธ๋Œ€๋กœ์˜ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ง€์ผœ์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ œ์•ˆํ•˜๊ณ  ์žˆ๋‹ค.

 

์ฝ๊ธฐ ์‰ฌ์šฐ๋ ค๋ฉด ์ฃผ์„์„ ์“ฐ๋ฉด ๋˜์ง€ ์•Š๋‚˜?

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

// ์ด๋ฆ„: ์›๋ฆฌ๊ธˆ์ƒํ™˜
// ์„ค๋ช…: ์›๋ฆฌ๊ธˆ์ƒํ™˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” Mapper
// ์ธ์ž1: m: ์›๋ฆฌ๊ธˆ
// ์ธ์ž2: pe: ์‹ ์šฉ๋“ฑ๊ธ‰
public void refundMapper(int m, String pe){
	...
}
 

์ฃผ์„๋งŒ ์ฝ์–ด๋ด๋„ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌด์—‡์„ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š”์ง€ ์•Œ ์ˆ˜๋Š” ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ฃผ์„์€ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ฃผ์„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์„์˜ ๋‚ด์šฉ๊ณผ ํ•จ์ˆ˜์˜ ์‹ค์ œ ๋™์ž‘์ด ์ผ์น˜ํ•œ๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.

์ˆ˜์‹œ๋กœ ๋ณ€ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋Š๋ผ ํ•จ์ˆ˜๊ฐ€ ์ˆ˜์ •๋  ๋•Œ ์ฃผ์„์ด ํ•จ๊ป˜ ์ˆ˜์ •๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์˜คํžˆ๋ ค ํ•œ๋‘ ๊ฐ€์ง€์˜ ์ž˜๋ชป๋œ ์ฃผ์„์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚˜ํ•œํ… ์ฝ๊ธฐ ์‰ฌ์šด๋ฐ?

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

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

๋˜ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‹œ์ ์—๋Š” ์ž‘์„ฑํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ 100%์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ฆฌ ‘์ฝ๊ธฐ ์‰ฝ๊ฒŒ’ ์ž‘์„ฑํ•˜๊ณ ์ž ๋…ธ๋ ฅํ•ด๋„ ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜๋ฐ–์— ์—†๋‹ค.

์ฝ๊ธฐ ์‰ฌ์šฐ๋ฉด ๋์ธ๊ฐ€?

์ฝ๊ธฐ๋งŒ ์‰ฌ์šฐ๋ฉด ๋ ๊นŒ? ๋„ˆ๋ฌด ์›์ดˆ์ ์ด๊ณ  ๋‹น์—ฐํ•œ ์ด์•ผ๊ธฐ์ด๊ธฐ์— ์™€ ๋‹ฟ์ง€ ์•Š๋Š”๋‹ค. ์ฝ๊ธฐ ์‰ฝ๋‹ค๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๊ฒƒ๋งŒ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋ฌด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆฒ์„ ๋ณผ ๋•Œ๋„ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค.

๊ทธ๋ณด๋‹ค ๋” ๊ทผ๋ณธ์ ์ธ ์ด์œ , ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ผ๋ฉด ์™œ ์ฝ๊ธฐ ์‰ฝ๋„๋ก ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ์–ด๋–ป๊ฒŒ ์ฝ๊ธฐ ์‰ฝ๋„๋ก ์ž‘์„ฑํ•˜๋Š”๊ฐ€? ์— ๋Œ€ํ•œ ๋ฌผ์Œ์œผ๋กœ ์ข‹์€ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์™œ ์ฝ๊ธฐ ์‰ฌ์›Œ์•ผ ํ•˜์ง€?



์ค‘๋ณต์ด ์—†๋Š” ์ฝ”๋“œ?

๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ A์™€ B์—์„œ ๋™์ผํ•œ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ์ˆœ๊ฐ„, ๊ณตํ†ต์œผ๋กœ ์ถ”์ถœ(extraction)ํ•˜๊ณ  ์‹ถ์–ด ํ•œ๋‹ค. ๋™์ผํ•œ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๊ธฐ์—๋„ ์ €๊ธฐ์—๋„ ์žˆ๋Š” ๊ฒƒ์€ ๊ต‰์žฅํžˆ ๋ถˆํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด ๋ถˆํŽธํ•จ์€ ์–ด๋””์—์„œ ์˜ค๋Š” ๊ฑธ๊นŒ?

 

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

 

๊ทธ ๋• ๊ฐ™์•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๊ฐ™์ง€ ์•Š์€

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฑด ์–ด๋ ต๋‹ค. ๋ถ„๋ช… A๋ผ๋Š” ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋™์ผํ•œ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ณ„๋„๋กœ ์ถ”์ถœํ–ˆ์ง€๋งŒ, ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  A์™€์˜ ์กฐ๊ธˆ ๋‹ค๋ฅธ A* ์—ญํ• ๋กœ ์ˆ˜์ •์ด ํ•„์š”ํ•ด์กŒ๋‹ค.

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

 

์ถ”์ถœ์€ ์–ด๋–ค ‘๊ธฐ์ค€’์œผ๋กœ ํ•ด์•ผํ• ๊นŒ?

 

์™œ ์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ๊ฐ€ ์ƒ์‚ฐ๋˜๋Š”๊ฐ€?

์‚ฌ์‹ค ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์‹œ์ ์—๋Š” ๋ชจ๋‘ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์„ ๋†“์น˜๋Š” ์‹œ์ ์ด ์กด์žฌํ•˜๊ณ  ์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ๊ฐ€ ์ƒ์‚ฐ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹๊นŒ.

์–ด์ฉŒ๋‹ค๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์ƒํ•˜๊ฒŒ ๋˜๋Š”๊ฑธ๊นŒ?

 

์šฐ๋ฆฌ๋Š” ์–ด๋–ค ์ƒํ™ฉ๋“ค์„ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š”๊ฐ€?

๊ฐœ๋ฐœ์ž๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๋‹ค์‹œ ๋งŒ๋“ค๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“  ํ”„๋กœ์ ํŠธ๋Š” ์„ธ์ƒ์˜ ๋น›์„ ๋ณด๊ธฐ๋„ ์ „์— ์ˆ˜์ •๋  ๊ฐ€๋Šฅ์„ฑ์ด (๋งค์šฐ) ๋งŽ๋‹ค.

  • ์ด๋ฏธ ์šด์˜ ์ค‘์ธ ์„œ๋น„์Šค์˜ CS ๋Œ€์‘ํ•˜๋ฉฐ ์ˆ˜์ •ํ•˜๊ธฐ
  • ๋ณ€๊ฒฝ๋œ ์š”๊ตฌ์‚ฌํ•ญ, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ
  • ์–ด์ œ ๋˜๋Š” ๋ฐฉ๊ธˆ ์ž‘์„ฑํ•œ ์ฝ”๋“œ ์ˆ˜์ •ํ•˜๊ธฐ

 

์“ฐ์ด์ง€ ์•Š๋Š” ์ฝ”๋“œ

์“ฐ์ง€ ์•Š๊ฒŒ ๋œ ์ฝ”๋“œ(Dead code)๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด ์ฝ”๋“œ๊ฐ€ ์–ด๋””์—์„œ ์“ฐ์ผ์ง€๋„ ๋ชจ๋ฅธ๋‹ค๋Š” ๋ถˆ์•ˆ๊ฐ์ด ์žˆ๋‹ค๋ฉด ๊ฐํžˆ ์‚ญ์ œํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๊ณ  ์ด ์ฝ”๋“œ๋Š” ๊นจ์ง„ ์œ ๋ฆฌ์ฐฝ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋œ๋‹ค.

 

์ด ๋ถˆ์•ˆ๊ฐ์€ ์–ด๋””์—์„œ ์˜ค๋Š” ๊ฒƒ์ผ๊นŒ?

 

 

1. ๊ฑฐ๋ฆฌ

์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ณณ๊ณผ ์ฝ”๋“œ๊ฐ€ ์ •์˜๋œ ๊ณณ ๊ฐ„์˜ ๋ฌผ๋ฆฌ์  ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€๋ฉด ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค์–ด์ง„๋‹ค. ๋ณด๊ณ  ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์ผ์ • ๋ฒ”์œ„์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ํ™•์‹ ์ด ์žˆ๋‹ค๋ฉด ๊ทธ ๋ฒ”์œ„๋งŒ ํ™•์ธ ํ›„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ผ๋Š” ํ™•์‹ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

2. ์ˆœ์ˆ˜ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ์–ด๋–ค ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋Š” ๊ทธ side effect๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ํ•จ์ˆ˜์˜ ์ž…์ถœ๋ ฅ๋งŒ ํ™•์ธํ•˜์—ฌ ํ•จ์ˆ˜ ๋‚ด๋ถ€๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ˆ˜์ •ํ•˜๊ธฐ ๊นŒ๋‹ค๋กญ๋‹ค.

public int getWage(name) {
  return this.getMySalary(name) / this.getTotalTime(new Date())
}
 

getWage๋ž€ ํ•จ์ˆ˜๋Š” name์ด๋ผ๋Š” ์ž…๋ ฅ ์™ธ์—๋„ getMySalary๋ผ๋Š” ์ž…๋ ฅ์œผ๋กœ ์ •์˜๋˜์ง€ ์•Š์€ ์ž…๋ ฅ์ด ์กด์žฌํ•˜๋ฉฐ new Date()๋ผ๋Š” ํ•ญ์ƒ ๋ณ€ํ•˜๋Š” ๊ฐ’์— ์˜์กดํ•œ๋‹ค.

์‘๊ธ‰์ฒ˜์น˜๋ฅผ ํ•œ ์ฝ”๋“œ

์ค‘๋ณต์œผ๋กœ ๋นผ๋’€์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์—์„œ ๋‹ค๋ฅธ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•  ๋•Œ๋ฅผ ์ข…์ข… ๋งˆ์ฃผํ•œ๋‹ค. ์ด ๋•Œ ์ˆ˜์ •์œผ๋กœ ์ธํ•œ Side effect๊ฐ€ ๋‘๋ ค์›Œ ํ•จ์ˆ˜์— ์ž…๋ ฅ์„ ์ถ”๊ฐ€ํ•˜๋˜๊ฐ€ ์˜ต์…˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋‚ด๋ถ€์—์„œ ์–ต์ง€๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ ๊ทธ ์ฝ”๋“œ๋Š” ์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ๊ฐ€ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์‘๊ธ‰์ฒ˜์น˜๊ฐ€ ๋ช‡ ๋ฒˆ ์ด๋ค„์ง€๋ฉด ๋ˆ„๊ตฌ๋„ ์•Œ์•„๋ณด๊ธฐ ์–ด๋ ค์šด ํ•จ์ˆ˜๊ฐ€ ํƒ„์ƒํ•œ๋‹ค. ๋‹น์—ฐํžˆ ์ด๋Ÿฐ ํ•จ์ˆ˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ณ ๋ฏผํ•˜๋Š” ์ข‹์€ ์ฝ”๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ธฐ์ˆ ๋ถ€์ฑ„

์‘๊ธ‰์ฒ˜์น˜๊ฐ€ ๋ฌด์กฐ๊ฑด ๋‚˜์˜๋‹ค๋Š” ๋ง์ด ์•„๋‹ˆ๋‹ค. ๋‹น์žฅ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํ•˜๋Š” ๋ฐ์— ์ด๋งŒํผ ๋น ๋ฅธ ๋Œ€์‘์ด ์—†๋‹ค. ํ˜„์žฌ ์„œ๋น„์Šค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ๋ฅผ ์žก์•„์•ผ ํ•˜๋Š”๋ฐ, ์ „์ฒด์ ์ธ ๊ตฌ์กฐ ๋ฆฌํŒฉํ† ๋ง์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค๋งŒ ์ด๋Ÿฐ ์‘๊ธ‰์ฒ˜์น˜ํ•œ ์ฝ”๋“œ๋“ค์€ ๋ถ€์ฑ„๊ฐ€ ๋˜๊ณ  ์ƒํ™˜์˜ ์˜๋ฌด๋ฅผ ์ ธ์•ผ ํ•œ๋‹ค.

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

 

์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ธฐ

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

 

์ถ”์ถœ์ด ์•„๋‹Œ, ์ถ”์ƒํ™”

์ถ”์ถœ๊ณผ ์ถ”์ƒํ™”๋Š” ๋ฌด์—‡์ด ๋‹ค๋ฅผ๊นŒ?

 

์ถ”์ถœ(extraction)

‘์ถ”์ถœํ•˜๋‹ค(extract)‘์˜ ์–ด์›์„ ์‚ดํŽด๋ณด๋ฉด ex(๋ฐ–์œผ๋กœ)์™€ tract(๋Œ์–ด๋‚ด๊ธฐ)์˜ ํ•ฉ์„ฑ์–ด์ด๋‹ค. ํŠน๋ณ„ํ•œ ๊ธฐ์ค€์—†์ด ๋‹จ์ˆœํžˆ ๋ฐ–์œผ๋กœ ๋Œ์–ด๋‚ด๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ถ”์ƒํ™”(abstraction)

‘์ถ”์ƒํ™”ํ•˜๋‹ค(abstract)‘์˜ ์–ด์›์€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ab(๋จผ ๊ฐœ๋…)์™€ tract(์ด๋Œ์–ด๋‚ด๊ธฐ)์˜ ํ•ฉ์„ฑ์–ด๋กœ, ์–ด๋–ค ๋Œ€์ƒ์˜ ์ค‘์š”ํ•œ ์š”์ ๋“ค์„ ์žฌํ•ด์„ํ•˜์—ฌ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋ผ๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜์กด์„ฑ์„ ๋“œ๋Ÿฌ๋‚ด๊ธฐ ์œ„ํ•œ ์ถ”์ƒํ™”

์šฐ๋ฆฌ๊ฐ€ ๋ณ„๋„ ํ•จ์ˆ˜ ๋˜๋Š” ํŒŒ์ผ๋กœ ์ถ”์ถœํ•˜๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„๋ฆฌํ•˜๊ณ  ๋‹จ์ง€ ํŒŒ์ผ์ด ์ปค์ ธ์„œ ๋ถ„๋ฆฌํ•œ๋‹ค. ๋‹จ์ˆœํžˆ ์ค‘๋ณต๋œ ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ(chunk)์— ๋Œ€ํ•ด ์ถ”์ถœํ•˜๋ฉด ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์˜คํžˆ๋ ค ํ•จ์ˆ˜ ๊ฐ„ ์˜์กด ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋น„์šฉ์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ž˜๋ชป ์ถ”์ถœํ•œ ๊ฒƒ์ด๋‹ค.

ํ•จ์ˆ˜๋ฅผ ๋ถ„๋ฆฌํ•  ๋•Œ๋Š” ๊ทธ ํ•จ์ˆ˜์˜ ์—ญํ• ์„ ์ธ์ง€ํ•˜๊ณ  ํ•˜๋‚˜์˜ ์—ญํ• ๋งŒ ํ•˜๋„๋ก ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰ ์˜์กด์„ฑ์„ ๋“œ๋Ÿฌ๋‚ด๊ธฐ ์œ„ํ•จ์ด ์ถ”์ถœ์˜ ๋ชฉ์ ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.

ํ•œ ํŒŒ์ผ์— ์—ฌ๋Ÿฌ ๋กœ์ง์ด ์–ฝํ˜€์žˆ์„ ๋•Œ ๊ฐ ์ฝ”๋“œ ์กฐ๊ฐ ์ค‘ ์„œ๋กœ ์˜์กด ๊ด€๊ณ„์— ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์ถ”์ถœํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ถ”์ƒํ™”๊ฐ€ ๋œ ํ•จ์ˆ˜๋Š” ํ•˜๋‚˜์˜ ๋ชฉ์ (์—ญํ• )์„ ๊ฐ–๊ฒŒ ๋˜๊ณ  ์˜๋ฏธ ์žˆ๋Š” ์ถ”์ถœ(์ถ”์ƒํ™”)์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

 

์˜์กด ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒƒ๋“ค๋ผ๋ฆฌ ์ถ”์ƒํ™”๋ฅผ ํ•ด๋ณด์ž.

 

Where

๋ฌด์—‡์„ ๋ถ„๋ฆฌํ• ์ง€ ์•Œ์•˜๋‹ค๋ฉด ์ด์ œ ์–ด๋””์— ๋ถ„๋ฆฌํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

๋‹จ์ˆœํžˆ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์ผ ๊ฒฝ์šฐ, ์–ด๋Š ์ •๋„์˜ ๋ ˆ๋ฒจ๋กœ ๊ณต์œ ๋ ์ง€์— ๋”ฐ๋ผ ์ •์˜๋˜๋Š” ์œ„์น˜๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ์–ด๋–ค ํ•จ์ˆ˜๋Š” ๋„๋ฉ”์ธ๊ณผ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉํ•ด ์žˆ์–ด์„œ ํŠน์ • ํŽ˜์ด์ง€์—์„œ๋งŒ ์žฌ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ณ  ์–ด๋–ค ํ•จ์ˆ˜๋Š” ์˜์กด ๊ด€๊ณ„์—†์ด ์–ด๋””์—์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ชฉ์ ์— ๋”ฐ๋ผ ๋งž๋Š” ์œ„์น˜์— ์ •์˜ํ•ด์ฃผ๋Š” ๊ฒƒ ๋˜ํ•œ ์ค‘์š”ํ•˜๋‹ค. 

์‚ญ์ œํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ์™€ ์‚ญ์ œํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ์˜ ๋ถ„๋ฆฌ

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

์ด๋Ÿฐ ์ฝ”๋“œ๋Š” ์ œ3์ž ์ž…์žฅ์—์„œ ์ฝ๊ธฐ๋„ ์–ด๋ ต๊ณ  ์„ฃ๋ถˆ๋ฆฌ ์‚ญ์ œํ•˜๊ธฐ๋„ ์–ด๋ ต๋‹ค. ๋ณต์žกํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•ด๋‘ฌ์•ผ ํ•œ๋‹ค.

์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ๊ฐ€ ์ƒ์‚ฐ๋˜๋Š” ๊ฒƒ์„ ์™„์ „ํžˆ ์ฐจ๋‹จํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ œ๋Œ€๋กœ ๊ด€๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ฒฉ๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

์œ„์—์„œ ์ฝ”๋“œ์˜ ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋กœ ์ฃผ์„์„ ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ, ์ด ๊ฒฝ์šฐ์—” ์ฃผ์„๊ณผ ํ•จ๊ป˜ ๊ฒฉ๋ฆฌํ•ด๋‘๋ฉด ๊ธฐ์กด ์ฝ”๋“œ์˜ ํ๋ฆ„์„ ๋Š์ง€ ์•Š๊ณ  ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

@Component
public class CommitUtil {

    private GitHub github;

    @Value("${github.token}")
    private String token;
}

ํ•˜๋“œ์ฝ”๋”ฉ์ด ๋ถˆ๊ฐ€ํ”ผํ•œ ๊ฒฝ์šฐ, ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ณต์žกํ•˜์—ฌ hackyํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ ์–ด์ฉ” ์ˆ˜ ์—†์ด ์ข‹์ง€ ์•Š๊ฒŒ ์ž‘์„ฑ๋˜๋Š” ์ฝ”๋“œ๋“ค์€ ์ฃผ์„๊ณผ ํ•จ๊ป˜ ๊ฒฉ๋ฆฌ์‹œ์ผœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์„ค์ • ๊ฐ’์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ application.properties์—์„œ ์„ค์ •๊ฐ’์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ž๋ฐ” ํŒŒ์ผ์— ์ฃผ์ž…ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•˜์ž.

์ผ๊ด€์„ฑ ์žˆ๋Š” ์ฝ”๋“œ

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

์ฝ”๋“œ์— ์ผ๊ด€์„ฑ์ด ์ง€์ผœ์ง„๋‹ค๋ฉด ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋Š ๊ณณ์— ์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ์œ„์น˜ํ•˜๋Š”์ง€ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์ ํŠธ ํŒ€์› ๊ฐ„์˜ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ(Ground Rule)์ด ํ•„์š”ํ•œ ์ด์œ ์ด๋‹ค.

 

Naming

๋ณ€์ˆ˜๋ช… ๋„ค์ด๋ฐ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ์ž‘์„ฑ๋˜๋Š” ์ˆ˜๋งŽ์€ ํ•จ์ˆ˜์˜ ๋„ค์ด๋ฐ์—๋„ ๊ทœ์น™์ด ์žˆ์œผ๋ฉด ์ผ๊ด€์„ฑ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

// Case 1.
// prefix: 
// action: Regist
// target: kyc
public Wallet RegistKyc(){
	...
}

์œ„์™€ ๊ฐ™์ด prefix, action, target ์ด ์ผ๊ด€๋œ ๊ทœ์น™์œผ๋กœ ์ž‘์„ฑ๋˜๋ฉด ํ•จ์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜๋Š”๋ฐ ํฐ ๋„์›€์ด ๋œ๋‹ค.

 

Directory

๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋Š” ์œ„์—์„œ ๋งํ•œ ‘์–ด๋””์— ๋ถ„๋ฆฌํ• ์ง€’์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค.

์šฐ์„  ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ์™€ ์•„ํ‚คํ…์ฒ˜๋Š” ๋น„๊ต ๋Œ€์ƒ์ด ์•„๋‹ˆ๋‹ค. (์•„ํ‚คํ…์ฒ˜ !== ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ) ์ผ๊ด€๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋Š” ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜๊ณ  ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๋Š”๋ฐ์—๋„ ๋„์›€์„ ์ค€๋‹ค.

Top Level์˜ directory ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ์–ด๋Š ๊ณณ์— ์–ด๋–ค ๋ชจ๋“ˆ ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์œ„์น˜ํ• ์ง€ ์˜ˆ์ธก์ด ๋œ๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋ก ํŠธ๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

src
โ”œโ”€โ”€ api
โ”œโ”€โ”€ components
โ”œโ”€โ”€ hooks
โ”œโ”€โ”€ model
โ”œโ”€โ”€ pages
โ”‚   โ”œโ”€โ”€ contract
โ”‚   โ””โ”€โ”€ docs
โ””โ”€โ”€ utils
 

components ๋””๋ ‰ํ„ฐ๋ฆฌ๋ผ๋ฉด ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์ปดํฌ๋„ŒํŠธ hierarchy๋ฅผ ๋“œ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ๊ณ  pages ๋””๋ ‰ํ„ฐ๋ฆฌ๋ผ๋ฉด route path๋ฅผ ๋“œ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์–ด๋Š ๊ณณ์— ์œ„์น˜ํ•˜๋Š”์ง€ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ํŒŒ์•…ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.

 

์‹ค๋ฌด์—์„  ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋งŽ์ด ๋‚˜ํƒ€๋ƒˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋Š” ์ฝ”๋“œ๊ฐ€ ํ•˜๋Š” ์—ญํ• ์— ๋”ฐ๋ผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ–ˆ๊ณ  ๋‘ ๋ฒˆ์งธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋Š” ํŽ˜์ด์ง€(๋„๋ฉ”์ธ ์˜์—ญ)์— ๋”ฐ๋ผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ–ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปค์ง€๊ณ  ๋ณต์žกํ•ด์ง€๋ฉด ์ฒซ ๋ฒˆ์งธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ์˜ ๊ฒฝ์šฐ, ์ฝ”๋“œ๊ฐ€ ์ •์˜๋œ ๊ณณ๊ณผ ์ฝ”๋“œ ์‚ฌ์šฉ๋˜๋Š” ๊ณณ์ด ๋ฉ€์–ด์ง€๋Š” ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋Š” Featured Based๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ๊ฐ„๋‹ค๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „๋ฐ˜์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค๋งŒ Top Level์˜ @shared ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์‘์ง‘๋„ ๋†’๊ฒŒ ๊ฐ๊ฐ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ์žˆ๋˜ ์™€์ค‘์— ์•ˆํฌ์ข…๋‹˜์˜ ๊ธ€ - ์ง€์—ญ์„ฑ์˜ ์›์น™์„ ๊ณ ๋ คํ•œ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ: ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ„๊ธฐ์„ ์ฝ์—ˆ๋Š”๋ฐ, ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

ํ™•์žฅ์„ฑ ์žˆ๋Š” ์ฝ”๋“œ

ํ™•์žฅ์ด ์–ด๋ ค์šด ์ฝ”๋“œ๋Š” ๋‚ด๋ถ€์—์„œ ๋งŽ์€ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉฐ ์ด๊ฒƒ์€ ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค. ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒ์‚ฐ์„ฑ๋„ ๋–จ์–ด์ง„๋‹ค.

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

 

์ ์ง„์ ์œผ๋กœ ๊ฐœ์„ ์ด ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ

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

 

ํ…Œ์ŠคํŠธ

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

 

๊ฒฐ๋ก 

 

So What?



์ข‹์€ ์ฝ”๋“œ๋ฅผ ์™œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€๋ถ€ํ„ฐ ๊ณ ๋ฏผํ–ˆ๋˜ ๊ณผ์ •์„ ๊ธ€๋กœ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

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

๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋Š”๊ฐ€?๋ผ๊ณ  ๋ฌป๋Š”๋‹ค๋ฉด ๋‹ต์€ ์—†๋‹ค. ํŒŒ๋ ˆํ†  ๋ฒ•์น™์— ์˜ํ•˜๋ฉด 80%์˜ ๋ฒ„๊ทธ๋Š” 20% ์ฝ”๋“œ์—์„œ ๋‚˜์˜จ๋‹ค. 20% ์ฝ”๋“œ ์ง€์ ์„ ์ฐพ์•„ ์ด ๋ถ€๋ถ„๋งŒ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋“ , ์ƒˆ๋กญ๊ฒŒ ์ž‘์„ฑ๋˜๋Š” ์˜์—ญ์—๋งŒ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋“  ์„ ํƒ์ด๋‹ค.