[Book] ํด๋ฆฐ์ฝ”๋“œ - 1์žฅ ๊นจ๋—ํ•œ ์ฝ”๋“œ, 2์žฅ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„

2020. 12. 23. 18:32ยท๐Ÿ“ Book/โœ Clean Code

1์žฅ ๊นจ๋—ํ•œ ์ฝ”๋“œ

๊นจ๋—ํ•œ ์ฝ”๋“œ๋ž€?

์ด ๋‹จ์–ด์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ •์˜๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ์•„๋ž˜๋Š” ์šฐ๋ฆฌ ๋ถ„์•ผ์—์„œ ์œ ๋ช…ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ๋งํ•œ ์ •์˜์ด๋‹ค.

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

 


2์žฅ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„

๋ณ€์ˆ˜, ํ•จ์ˆ˜, ์ธ์ˆ˜์™€ ํด๋ž˜์Šค, ์†Œ์Šค ํŒŒ์ผ, ์†Œ์Šค ํŒŒ์ผ ๋‚ด ๋””๋ ‰ํ„ฐ๋ฆฌ ๋“ฑ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ด๋ฆ„์€ ์–ด๋””๋‚˜ ์“ฐ์ธ๋‹ค.

 

1. ์˜๋„๋ฅผ ๋ถ„๋ช…ํžˆ ๋ฐํ˜€๋ผ

๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜, ํด๋ž˜์Šค์˜ ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์— ๋ชจ๋‘ ๋‹ตํ•ด์•ผ ํ•œ๋‹ค.

์กด์žฌ ์ด์œ ๋Š”? ์ˆ˜ํ–‰ ๊ธฐ๋Šฅ์€? ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€?

 

๋”ฐ๋กœ ์ฃผ์„์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ด๋ฆ„์— ์˜๋„๋ฅผ ๋ถ„๋ช…ํžˆ ๋“œ๋Ÿฌ๋‚ด์ง€ ๋ชปํ•œ ๊ฒƒ์ด๋‹ค.

์˜๋„๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ์ดํ•ด์™€ ๋ณ€๊ฒฝ์ด ์‰ฌ์›Œ์ง„๋‹ค.

 

2. ๊ทธ๋ฆ‡๋œ ์ •๋ณด๋Š” ํ”ผํ•˜๋ผ

์ฝ”๋“œ์— ๊ทธ๋ฆ‡๋œ ๋‹จ์„œ๋ฅผ ๋‚จ๊ฒจ์„œ๋Š” ์•ˆ ๋œ๋‹ค.

๊ทธ๋ฆ‡๋œ ๋‹จ์„œ๋Š” ์ฝ”๋“œ ์˜๋ฏธ๋ฅผ ํ๋ฆฐ๋‹ค.

  • ๋‚˜๋ฆ„๋Œ€๋กœ ๋„๋ฆฌ ์“ฐ์ด๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๋‹จ์–ด๋ฅผ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ์‚ฌ์šฉํ•ด๋„ ์•ˆ๋œ๋‹ค. Ex) hp, aix ๋“ฑ
  • ์—ฌ๋Ÿฌ ๊ณ„์ •์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์„ ๋•Œ ์‹ค์ œ List๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด accountList๋ผ ๋ช…๋ช…ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์‹ค์ œ List์ธ ๊ฒฝ์šฐ๋ผ๋„ ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜•์„ ์ด๋ฆ„์— ๋„ฃ์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
  • ์„œ๋กœ ํก์‚ฌํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•œ๋‹ค.
  • ์œ ์‚ฌํ•œ ๊ฐœ๋…์€ ์œ ์‚ฌํ•œ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

3. ์˜๋ฏธ ์žˆ๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋ผ

์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋งŒ ํ†ต๊ณผํ•˜๋ ค๋Š” ์ƒ๊ฐ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์Šค์Šค๋กœ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค.

์—ฐ์†๋œ ์ˆซ์ž(a1, a2,...)๋ฅผ ๋ถ™์ด๊ฑฐ๋‚˜ ๋ถˆ์šฉ์–ด(Info, Data ๋“ฑ)๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์€ ์ ์ ˆํ•˜์ง€ ์•Š๋‹ค.

 

4. ๋ฐœ์Œํ•˜๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ

๋ฐœ์Œํ•˜๊ธฐ ์–ด๋ ค์šด ์ด๋ฆ„์€ ํ† ๋ก ํ•˜๊ธฐ๋„ ์–ด๋ ต๋‹ค.

 

5. ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ

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

๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

 

6. ์ธ์ฝ”๋”ฉ์„ ํ”ผํ•˜๋ผ

๊ตณ์ด ๋ถ€๋‹ด์„ ๋”ํ•˜์ง€ ์•Š์•„๋„ ์ด๋ฆ„์— ์ธ์ฝ”๋”ฉํ•  ์ •๋ณด๋Š” ๋งค์šฐ ๋งŽ๋‹ค.

์œ ํ˜•์ด๋‚˜ ๋ฒ”์œ„ ๋“ฑ ๋„ˆ๋ฌด ๋งŽ์€ ์ •๋ณด๋ฅผ ์ธ์ฝ”๋”ฉํ•œ๋‹ค๋ฉด ๊ทธ๋งŒํผ ์ด๋ฆ„์„ ํ•ด๋…ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค.

 

7. ์ž์‹ ์˜ ๊ธฐ์–ต๋ ฅ์„ ์ž๋ž‘ํ•˜์ง€ ๋งˆ๋ผ

๋…์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ฉด์„œ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ž์‹ ์ด ์•„๋Š” ์ด๋ฆ„์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๊ทธ ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ๋ชปํ•˜๋‹ค.

๋ฌธ์ž ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๋‹จ, ๋ฃจํ”„ ๋ฒ”์œ„๊ฐ€ ์ž‘์€ ๋ณ€์ˆ˜(i, j, k)๋Š” ๊ดœ์ฐฎ๋‹ค.

 

8. ํด๋ž˜์Šค ์ด๋ฆ„

ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๊ฐ์ฒด ์ด๋ฆ„์€ ๋ช…์‚ฌ๋‚˜ ๋ช…์‚ฌ๊ตฌ๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.

Manager, Processor, Data, Info ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹จ์–ด๋Š” ํ”ผํ•˜๊ณ  ๋™์‚ฌ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

9. ๋ฉ”์„œ๋“œ ์ด๋ฆ„

  • ๋ฉ”์„œ๋“œ๋Š” ๋™์‚ฌ๋‚˜ ๋™์‚ฌ๊ตฌ๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.
  • ์ ‘๊ทผ์ž, ๋ณ€๊ฒฝ์ž, ์กฐ๊ฑด์ž๋Š” javabean ํ‘œ์ค€์— ๋”ฐ๋ผ get, set, is๋ฅผ ๋ถ™์ธ๋‹ค.
  • ์ƒ์„ฑ์ž๋ฅผ ์ค‘๋ณต ์ •์˜ํ•  ๋•Œ๋Š” ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ์ธ์ˆ˜๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.
Complex fulcrumPoint = new Complex(23.0);
Complex fulcrumPoint = Complex.FromRealNumber(23.0);	// ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ

 

10. ํ•œ ๊ฐœ๋…์— ํ•œ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

์ถ”์ƒ์ ์ธ ๊ฐœ๋… ํ•˜๋‚˜์— ๋‹จ์–ด ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ์ด๋ฅผ ๊ณ ์ˆ˜ํ•œ๋‹ค. Ex) get์™€ fetch, manager์™€ controller ๋“ฑ

 

11. ํ•ด๋ฒ• ์˜์—ญ์—์„œ ๊ฐ€์ ธ์˜จ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ

์ „์‚ฐ ์šฉ์–ด, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ฆ„, ํŒจํ„ด ์ด๋ฆ„, ์ˆ˜ํ•™ ์šฉ์–ด ๋“ฑ์„ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Book/โœ Clean Code' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Book] ํด๋ฆฐ์ฝ”๋“œ - 6์žฅ ๊ฐ์ฒด์™€ ์ž๋ฃŒ ๊ตฌ์กฐ
  • [Book] ํด๋ฆฐ์ฝ”๋“œ - 5์žฅ ํ˜•์‹ ๋งž์ถ”๊ธฐ
  • [Book] ํด๋ฆฐ์ฝ”๋“œ - 4์žฅ ์ฃผ์„
  • [Book] ํด๋ฆฐ์ฝ”๋“œ - 3์žฅ ํ•จ์ˆ˜
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] ํด๋ฆฐ์ฝ”๋“œ - 1์žฅ ๊นจ๋—ํ•œ ์ฝ”๋“œ, 2์žฅ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„
์ƒ๋‹จ์œผ๋กœ

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