Dhey 2022. 1. 24. 04:42
๋ฐ˜์‘ํ˜•

โ‰ซ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๋†’์€ Clean Method์˜ ์กฐ๊ฑด

   1. Method๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๊ธฐ ์šฉ์ดํ•ด์•ผ ํ•œ๋‹ค.
   2. Method๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ณ , ๋ณ€๊ฒฝํ•˜๊ธฐ ์šฉ์ดํ•ด์•ผ ํ•œ๋‹ค.
   3. Method๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์šฉ์ดํ•ด์•ผ ํ•œ๋‹ค.

 

 

โ–ถ Clean Method์˜ ์›์น™
· ๊ฐ€๋Šฅํ•œ ํ•œ ์ถฉ๋ถ„ํžˆ ์ž‘์•„์•ผ ํ•œ๋‹ค.
· ํ•œ ๊ฐ€์ง€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ•œ ๊ฐ€์ง€๋ฅผ ์ž˜ ํ•ด์•ผ ํ•œ๋‹ค.
· ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.
· ์ค‘๋ณต์ด ์—†์–ด์•ผ ํ•œ๋‹ค.

 

 

Method๋ฅผ ๋งŒ๋“ค ๋•Œ Method๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ธ์ง€์  ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, Method๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ๋ณด๊ฑฐ๋‚˜ API ๋ฌธ์„œ๋ฅผ ๋ณด์ง€ ์•Š๊ฒŒ๋” ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ธ์ง€์  ๋ถ€ํ•˜๋ฅผ ๋‚ฎ์ถ”๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ Method์˜ Parameter์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿผ Prameter์˜ ๊ฐœ์ˆ˜๋Š” ๋ช‡๊ฐœ๊ฐ€ ๊ฐ€์žฅ ์ข‹์„๊นŒ?

๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ์ธ์ง€์  ๋ถ€ํ•˜์˜ ์˜ˆ 

 

Parameter์˜ ๊ฐœ์ˆ˜๊ฐ€ 3-4๊ฐœ ์ด์ƒ์ผ ๋•Œ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

 

1. Method๋ฅผ ๋ถ„ํ• ํ•œ๋‹ค.

  → Method๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช…ํ™•ํžˆ ํ•œ ๊ฐ€์ง€ ์—ญํ• ์„ ํ•˜๋Š” 2๊ฐœ ์ด์ƒ์˜ Method๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

2. Parameter Object๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  → method๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, ์‹ค์ œ ์ธ์ž๋กœ ์ˆ˜๋งŽ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์ž๋ฅผ primitive๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Object๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋„˜๊ฒจ์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค.

      ex) saveProduct(product) // name, type, price, instructor, description, ...

 

3. ์ƒ์„ฑ์ž์˜ ๊ฒฝ์šฐ Builder Pattern์„ ํ™œ์šฉํ•œ๋‹ค.

  → ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ๋‹ด๊ณ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์œผ๋ฉด ์ƒ์„ฑ์ž๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿด๊ฒฝ์šฐ, Builder Pattern์„ ํ™œ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํ•„์š”ํ•œ ๊ฒƒ๋“ค๋งŒ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ธํŒ…ํ•˜์—ฌ buildํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

      ex) Product("cleancode", "course", 10, "Dahye", ...) _ ์ผ๋ฐ˜

            Product.builder().name("cleancode").type("course").price(10).build() _ Builder Pattern ํ™œ์šฉ

 

4. Map์„ ์‚ฌ์šฉํ•œ๋‹ค.

  → Parameter์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„ ์‹œ Map ์‚ฌ์šฉ์˜ ์œ ํ˜น์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Map ์‚ฌ์šฉ์‹œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค. Map์˜ Key๊ฐ’์ด ์œ ๋™์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ๋ฌธ์„œํ™”๊ฐ€ ํ•„์š”ํ•˜๊ณ , Map์˜ Key์˜ ์ •๋ณด๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ์‹œ ์•Œ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. ๋˜ํ•œ ํ˜ธ์ถœํ•˜๋Š” ์‚ฌ๋žŒ์ด Key ๊ฐ’์— ์˜คํƒ€๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

์•ž์—์„œ ์ข‹์€ method๋Š” ์ž‘๊ณ , ํ•œ ๊ฐ€์ง€ ์ผ์„ ํ•ด์•ผํ•œ๋‹ค ํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋จผ์ € Clean Method๋Š” ์–ผ๋งˆ๋‚˜ ์ž‘์•„์•ผํ• ๊นŒ?

 

โ‰ซ ์ž‘๊ณ  ์—ญํ• ์ด ๋ช…ํ™•ํ•œ ๋ฉ”์†Œ๋“œ์˜ ์žฅ์ 

   ·  ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

   ·  ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

   ·  ๋‹จ์œ„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

   ·  ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๋‹ค.

 

Rules of Thumb
 · 10~100 ๋ผ์ธ ์‚ฌ์ด๊ฐ€ ์ ์ ˆํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆซ์ž์— ์ง‘์ฐฉํ•  ํ•„์š”๋Š” ์—†๋‹ค.
 · 1๊ฐœ์˜ Method๋Š” ์Šคํฌ๋กค๋ง์„ ํ•˜์ง€ ์•Š๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
 · ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์—†์–ด์•ผ ํ•œ๋‹ค.
 · Method ๋™์ž‘์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์— ์ฃผ์„์„ ๋‹ฌ์•„์•ผ ํ•˜๋ฉด Bad Smell์ด๋‹ค.
   (์ฃผ์„์ด ํ•„์š”ํ•œ ์ฝ”๋“œ๋“ค์€ ์ƒˆ๋กœ์šด Method๋กœ ์ถ”์ถœํ•œ๋‹ค)

 

 

 

Method์˜ ํฌ๊ธฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์œผ๋‹ˆ ์ด๋ฒˆ์—” ํ•œ ๊ฐ€์ง€์˜ ๋ช…ํ™•ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์ž.

 

โ‰ซ ํ•œ ๊ฐ€์ง€์˜ ๋ช…ํ™•ํ•œ ์ผ์„ ํ•˜๋Š” Method์˜ ์žฅ์ 

  · ๋ช…ํ™•ํ•œ Naming์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์ด๋ฆ„๋งŒ์œผ๋กœ ๊ธฐ๋Šฅ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

  · ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์•„์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.(Cyclomatic Complexity) → ์กฐ๊ฑด๋ฌธ์˜ ๋ณต์žกํ•œ ์ค‘์ฒฉ๊ตฌ์กฐ๊ฐ€ ์ ๋‹ค.

  · Method์˜ ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

  · ๋‹จ์œ„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

 

 

 

ํ•œ ๊ฐ€์ง€์˜ ์ผ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

 

 

1. ํ•˜๋‚˜์˜ Method๋Š” ๋™์ผํ•œ ์ถ”์ƒํ™”์˜ ์ˆ˜์ค€๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

 

* ์ถ”์ƒํ™”์˜ ์ˆ˜์ค€(Level of Abstraction)์ด๋ž€?

์ถ”์ƒํ™”์˜ ์ˆ˜์ค€ ์˜ˆ์‹œ
Higher Level๊ณผ Lower Level ๋น„๊ต

 

ํšŒ์›๊ฐ€์ž… method๋ฅผ ์˜ˆ์‹œ๋กœ ํ•œ method ์•ˆ์— ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋™์ผํ•˜๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ๋ณด์ž.

์ฝ”๋“œ์˜ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐˆ์ˆ˜๋ก Higher Level ์ด๋‹ค.
์ „์ฒด์ ์œผ๋กœ intermediate Level ์ด๋‹ค.

 

๋˜ ๋‹ค๋ฅธ ์ถ”์ƒํ™” ์ˆ˜์ค€์˜ ์˜ˆ๋ฅผ ๋ณด์ž.

์ถ”์ƒํ™”์˜ ์ˆ˜์ค€์„ ์œ„๋ฐ˜ํ•œ ์ผ€์ด์Šค
4๊ฐœ์˜ method ๋ชจ๋‘ ํ•˜๋‚˜์˜ method๋Š” ๋™์ผํ•œ ์ถ”์ƒํ™”์˜ ์ˆ˜์ค€์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ์ง€ํ‚จ ์ผ€์ด์Šค

 

 

 

2. Method์˜ ์ด๋ฆ„์ด ์ฑ…์ž„์ง€๋Š” ๋ฒ”์œ„์˜ ์ผ๋งŒ ํ•ด์•ผ ํ•œ๋‹ค.

 

๊ตฌ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ์˜์—ญ์„ ์ •ํ•˜๋ฉด ๊ทธ ์‹œ์Šคํ…œ์€ ์ฑ…์ž„์ง€๋Š” ์ผ๋งŒ ํ•ด์•ผํ•œ๋‹ค.

 

์ด๋ฆ„์˜ ์ฑ…์ž„์„ ๋ฒ—์–ด๋‚˜๋Š” Bad Smell์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.

 

 


 

Clean Method๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ง€์†์ ์ธ ๊ฐœ์„ ์ด๋‹ค

ํ•œ ๊ฐ€์ง€๋ฅผ ์ž˜ํ•˜๋Š” Method๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค. 

๋”ฐ๋ผ์„œ

์ถฉ๋ถ„ํžˆ ์ž‘์€๊ฐ€, ์ถฉ๋ถ„ํžˆ ํ…Œ์ŠคํŠธ ๋˜๊ณ  ์žˆ๋Š”๊ฐ€? ๋Š์ž„์—†๋Š” ์งˆ๋ฌธ๊ณผ ๊ฐœ์„ ์ด ์ค‘์š”ํ•˜๋‹ค. 

์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฑฐ๋Œ€ํ•œ Method๋Š” ์ ๋‹ค. ํ•˜์ง€๋งŒ ์ž ๊น์˜ ์œ ํ˜น๋“ค์ด ์ ์  ๊ฑฐ๋Œ€ํ•œ Method๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์„ค๊ณ„์— ๋Œ€ํ•œ ๊ณ ๋ ค ์—†์ด ๊ธฐ์กด Method์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•˜๋‹ค.

 

 


 

์ค‘๋ณต ์ฝ”๋“œ

์ผ์ • ๋ผ์ธ ์ˆ˜ ์ด์ƒ์ด ๋‹ค์ˆ˜ ์ค‘๋ณต๋˜์–ด ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ

 

์ค‘๋ณต ์ฝ”๋“œ์˜ ์ข…๋ฅ˜

1. Method ์ „์ฒด ์ฝ”๋“œ ์ค‘๋ณต

  : ๋‹ค์ˆ˜์˜ Method์˜ ๊ตฌํ˜„๋ถ€๊ฐ€ 100% ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ (* Method ์ด๋ฆ„์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)

 

2. ์—ฐ์† ๋œ ์ผ๋ จ์˜ ์ฝ”๋“œ ์ค‘๋ณต

  : Method ์ „์ฒด๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ผ๋ถ€ ์—ฐ์† ๋œ ์ฝ”๋“œ๊ฐ€ ๋‹ค์ˆ˜ ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ (* ์ค‘๋ณต ์ฝ”๋“œ์˜ ๋Œ€๋‹ค์ˆ˜๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ์œ ํ˜•)

 

3. ์ผ๋ถ€๋งŒ ๋‹ค๋ฅธ ์ฝ”๋“œ ์ค‘๋ณต

  : ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋˜์ง€๋งŒ ์ค‘๊ฐ„ 1-2 ๋ผ์ธ ์ •๋„๋งŒ ๋‹ค๋ฅธ ๊ฒฝ์šฐ (* Refactoringํ•˜๊ธฐ ๊ฐ€์žฅ ๊นŒ๋‹ค๋กœ์šด ์œ ํ˜•)

์œ„, ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” ๊ฐ™์ง€๋งŒ ๊ฐ€์šด๋ฐ ๋ช‡ ๋ผ์ธ๋งŒ ๋‹ค๋ฅธ ๊ฒฝ์šฐ

 

 

์ค‘๋ณต ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ 

 - ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋ฅผ ํฌ๊ฒŒ ๋งŒ๋“ ๋‹ค. (์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ํฌ๋ฉด ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฐ๋‹ค)

 - ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋•Œ ์ค‘๋ณต๋œ ๋‹ค์ˆ˜์˜ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. (์ผ๋ถ€ ๋ˆ„๋ฝ๋  ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค)

 - ์ค‘๋ณต ์ฝ”๋“œ์— ์ž ์žฌ์  ๊ฒฐํ•จ์ด ์žˆ์„ ์‹œ, ๊ฒฐํ•จ๋„ ๊ฐ™์ด ์ค‘๋ณต ๋œ๋‹ค.

 

 

์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฒ•

 - ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•œ๋‹ค. (But, ์ˆ˜๋™์œผ๋กœ ์ „์ฒด SW ์‹œ์Šคํ…œ์˜ ์ค‘๋ณต์„ ๋‹ค ๋ฐœ๊ฒฌํ•˜๊ธฐ๋Š” ์‰ฝ์ง€ ์•Š๋‹ค)

 - ์ •์  ๋ถ„์„์„ ํ•œ๋‹ค. (CPD, Atomiq ๋“ฑ์˜ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•œ๋‹ค)

 - ๋‹ค์–‘ํ•œ Refactoring ์ „๋žต ๋ฐ Design Pattern์„ ์ ์šฉํ•œ๋‹ค.

   (Extract Method, Extract Superclass, Template Method Pattern)

 

 


 

โ€ป ๋ณด์ด์Šค์นด์šฐํŠธ ๋ฒ•์น™

    : ์บ ํ”„์žฅ์— ์ฒ˜์Œ ์™”์„ ๋•Œ๋ณด๋‹ค ๋” ๊นจ๋—ํ•˜๊ฒŒ ํ•ด๋†“๊ณ  ๋– ๋‚˜๋ผ (= ์ฒดํฌ์•„์›ƒ ํ•  ๋•Œ๋ณด๋‹ค ์กฐ๊ธˆ์ด๋ผ๋„ ๋” ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ์ฒดํฌ์ธ ํ•˜๋ผ)

     → ์•„์ฃผ ์ž‘์€ ๊ฐœ์„ ์ด๋ผ๋„ ์ง€์†๋˜๋ฉด ์ฝ”๋“œ๋Š” ๋‚˜๋น ์ง€์ง€ ์•Š๋Š”๋‹ค.

          (ex. ์กฐ๊ธˆ ๊ธด ํ•จ์ˆ˜๋ฅผ ๋ถ„ํ• , ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐ, ๋ณต์žกํ•œ if๋ฌธ 1๊ฐœ ์ •๋ฆฌ ๋“ฑ)

 

 

๋ณด์ด์Šค์นด์šฐํŠธ ๊ทœ์น™์ด ์ œ๋Œ€๋กœ ์ง„ํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

 

1. Clean Code๋ฅผ ์žฅ๋ คํ•˜๋Š” ๋ฌธํ™”๊ฐ€ ํ˜•์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

    → ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์„ ๋ฌด์‹œํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

 

2. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    → ์ˆ˜์ • ํ›„์—๋Š” ํ•ญ์ƒ ๊ธฐ์กด ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์ด ์—†์Œ์„ ๊ฒ€์ฆํ•ด์•ผ ํ•œ๋‹ค.

    → ์ˆ˜์ • ํ›„์—๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ํ™•์ธํ•œ๋‹ค.

 

 

โ€ป ๋น„์ž์•„์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Egoless Programming)

  : ์—”์ง€๋‹ˆ์–ด ๊ฐœ๊ฐœ์ธ์˜ ์š”์†Œ๋“ค์„ ์ตœ๋Œ€ํ•œ ์ œ๊ฑฐํ•จ์œผ๋กœ์จ ์ „์ฒด SW ํ’ˆ์งˆ์„ ๋†’์ด๋Š” ๋ฌธํ™”

   ( ๊ฐ์ž ๋งŒ๋“  ์ฝ”๋“œ์— ๊ฐœ์ธ์˜ ์ž์•„๋ฅผ ํˆฌ์˜ํ•˜์ง€ ๋ง์•„์•ผ ํ•จ, ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์ง€์†์ ์ธ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋ฉฐ ๊ณต๋™ ์ฑ…์ž„ ์ฒ ํ•™์„ ๊ฐ•์กฐ)

 

โ–ท ๋น„์ž์•„์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๊ฐ€์ด๋“œ_Jeff Atwood
  · ๋‹น์‹ ์ด ์‹ค์ˆ˜ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐ›์•„ ๋“ค์—ฌ๋ผ
  · ๋‹น์‹ ๊ณผ ๋‹น์‹ ์ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅด๋‹ค.
  · ๋‹น์‹ ๋ณด๋‹ค ์ง€์‹์ด ์ ์€ ์‚ฌ๋žŒ์ด๋ผ๋„ ์กด์ค‘ํ•˜๊ณ  ์ธ๋‚ด๋ฅผ ๊ฐ–๊ณ  ๋Œ€ํ•˜๋ผ.
  · ์„ธ์ƒ์— ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๊ฒƒ์€ ์—†๋‹ค. ๋ณ€ํ™”๋ฅผ ๋ฐ›์•„๋“ค์—ฌ๋ผ.
  · ์‚ฌ๋žŒ์ด ์•„๋‹Œ ์ฝ”๋“œ๋ฅผ ๋น„ํŒํ•ด๋ผ. ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์นœ์ ˆํžˆ ๋Œ€ํ•˜๋ผ.

 

 

โ˜… ๋”ฐ๋ผ์„œ, Clean Method๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”

 · Parameter์˜ ๊ฐœ์ˆ˜๋Š” ์ ๊ฒŒ,
 · Clean Name์œผ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ,
 · ํฌ๊ธฐ๋Š” ์ž‘๊ฒŒ,
 · ์—ญํ• ์€ ๋ช…ํ™•ํ•˜๊ฒŒ,
 · ์ค‘๋ณต ์—†๋Š” ์ƒํƒœ๋กœ,
 · ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€์™€ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์€ ๋†’๊ฒŒ.  ํ•ด์•ผํ•œ๋‹ค.

 

 


 

์ฝ”๋“œํ”„๋ ˆ์†Œ Java ์›น ๊ฐœ๋ฐœ ์ฒดํ—˜๋‹จ ํ™œ๋™ ์ค‘ 'SW ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ์„ ์œ„ํ•œ Clean Code' ์ด๋Ÿฌ๋‹ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :)
์ฝ”๋“œํ”„๋ ˆ์†Œ URL: https://www.codepresso.kr/

 

ํ”„๋ฆฌ๋ฏธ์—„ IT ๊ต์œก ์„œ๋น„์Šค - ์ฝ”๋“œํ”„๋ ˆ์†Œ

 

www.codepresso.kr

 

๋ฐ˜์‘ํ˜•