Dhey 2022. 1. 24. 16:40
๋ฐ˜์‘ํ˜•
Control Structure

์กฐ๊ฑด, ๋ฃจํ”„(loop), ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ์„ ์–ธ๋ฌธ

 

if, if-else, for, while, do while ๋“ฑ

· Control Structures๋Š” ์ฝ”๋“œ ๋ณต์žก๋„์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ์ฃผ๋Š” ์š”์†Œ์ด๋‹ค.

· ํŠนํžˆ ์ค‘์ฒฉ๋œ Control Structures๋Š” ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์€ ๋‚ฎ์ถ”๊ณ , ๋ณต์žก๋„๋Š” ์˜ฌ๋ฆฌ๊ฒŒ ๋œ๋‹ค. 

 

 

 

Control Sturcture๋กœ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•

1. Fail Fast! Early Return!

 * Fail Fast ๋นจ๋ฆฌ ์‹คํŒจํ•˜๋Š” '๊ฒ€์ฆ๋กœ์ง'์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•œ๋‹ค.

์ขŒ) ์—ฌ๋Ÿฌ if๋ฌธ์ด ์ค‘์ฒฉ๋œ ํ›„ ๋กœ์ง์ด ๋“ฑ์žฅํ•˜๋Š” ์ฝ”๋“œ / ์šฐ) ๋ณ€๊ฒฝ ํ›„ ์ฝ”๋“œ

โ–ถ ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๊ฒฝ์šฐ์˜ ์ด์ 

   - ๊ฒ€์ฆ ์˜์—ญ(์ฝ”๋“œ ์ƒ๋‹จ)๊ณผ ํ•ต์‹ฌ ๋กœ์ง ์˜์—ญ(์ฝ”๋“œ ํ•˜๋‹จ)์ด ๋ถ„๋ฆฌ๋œ๋‹ค.

   - Method์˜ ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค.

   - ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ์šฉ์ดํ•ด์ง„๋‹ค.

 

Fail Fast์˜ ๋˜ ๋‹ค๋ฅธ ์˜ˆ

 

 

2. ์ตœ๋Œ€ํ•œ ๊ธ์ • ์กฐ๊ฑด์œผ๋กœ ํ‘œํ˜„ํ•˜๋ผ

  → ๊ธ์ •์ ์ธ ํ‘œํ˜„์€ ๋ถ€์ •์  ํ‘œํ˜„๋ณด๋‹ค ์ดํ•ดํ•˜๊ธฐ ์ƒ๋Œ€์ ์œผ๋กœ ์šฉ์ดํ•˜๋ฏ€๋กœ, ์กฐ๊ฑด๋ฌธ์€ ๊ธ์ • ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋…์„ฑ ๊ด€์ ์—์„œ ์ข‹๋‹ค.

!(not)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์กฐ๊ฑด์€ ๊ธ์ •์„ ํ‘œํ˜„ํ•˜๋Š” Method๋กœ ์น˜ํ™˜ํ•ด๋ผ

 

 


 

Cyclomatic Complexity

์†Œ์Šค ์ฝ”๋“œ์˜ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ

 

· ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ํ”„๋กœ๊ทธ๋žจ์ด ๊ตฌ์กฐ์ ์œผ๋กœ ์•ˆ์ •๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฉฐ,

  ๋ณต์žก๋„๊ฐ€ ๋†’์„์ˆ˜๋ก ํ”„๋กœ๊ทธ๋žจ์ด ๋น„๊ตฌ์กฐ์ ์ด๋ฉฐ ๋ถˆ์•ˆ์ •ํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

· ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด ํ๋ฆ„์„ Node, Edge๋กœ ํ‘œํ˜„ํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.

 

์™ผ์ชฝ์˜ ์ฝ”๋“œ๋ฅผ ์˜ค๋ฅธ์ชฝ์— ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋ƒ„

 

Cyclomatic Complexity๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•

์•„๋ž˜ ๊ทธ๋ฆผ์„ ์˜ˆ์‹œ๋กœ ๊ณ„์‚ฐํ•ด๋ณด์ž.

 

1. ๋ณต์žก๋„ V(G) = edge์˜ ์ˆ˜ - node์˜ ์ˆ˜ + 2

์ด๋ฏ€๋กœ

V(G) = 6 - 5 + 2 = 3  ์ด๋‹ค.

 

 

2. ๋ณต์žก๋„ V(G) = ๋ถ„๊ธฐ๋ฌธ์˜ ์ˆ˜ + 1

์ด๋ฏ€๋กœ

V(G) = 2 + 1 = 3  ์ด๋‹ค.

 

 

 


 

Refactoring

SW ํ’ˆ์งˆ ํ–ฅ์ƒ์„ ๋ชฉ์ ์œผ๋กœ ๊ธฐ๋Šฅ์˜ ๋ณ€๊ฒฝ ์—†์ด, ๋‚ด๋ถ€์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ์ˆ 

 

Refactoring ๊ณผ์ •

โ‰ซ ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•œ๋‹ค → ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•œ๋‹ค → ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ๋‹ค.

 

 

โ€ป Code Refactoring์„ ์œ„ํ•œ Code Bad Smell์˜ ์˜ˆ

 

 

Refactoring ์นดํƒˆ๋กœ๊ทธ

: Code Bad Smell์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๊ฐœ์„  ์ „๋žต๋“ค์˜ ๋ชจ์Œ

  ('์นดํƒˆ๋กœ๊ทธ'๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ด์œ  : Category๋ณ„๋กœ ์ •๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—)

 

 

โ€ป ์•ž์„œ ๋ณธ Code Bad Smell์— ๋Œ€ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” Refactoring ์ „๋žต Mapping

 

 

โ€ป Refactoring์˜ ์˜ˆ

๋„ˆ๋ฌด ๋งŽ์€ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ •์˜ Object๋กœ ์ •๋ฆฌ

 

 


 

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

 

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

 

www.codepresso.kr

๋ฐ˜์‘ํ˜•