๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿคท๐Ÿผ‍โ™€๏ธ Etc.../- ๊ธฐํƒ€

[๊ฐœ๋ฐœ์ž ์ฑ…์ฝ๊ธฐ] ํด๋ฆฐ ์ฝ”๋“œ-์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ์žฅ์ธ ์ •์‹  (2์žฅ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„)

by Wonit 2022. 2. 2.

ํ•ด๋‹น ๊ธ€์€ Robert C.Martin ํด๋ฆฐ ์ฝ”๋“œ ๋ผ๋Š” ์ฑ…์„ ์ฝ๊ณ  ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌ ๋ฐ ํšŒ๊ณ ํ•˜๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์‚ฌํ•ญ์€ YES 24 ํด๋ฆฐ ์ฝ”๋“œ - ์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ์žฅ์ธ ์ •์‹  ์—์„œ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

ํด๋ฆฐ ์ฝ”๋“œ - ์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ์žฅ์ธ ์ •์‹  (Uncle Bob)

 

  • ์œ„ํ‚ค๋ถ์Šค
  • ์ง€์€์ด: Robert C.Martin (Uncle Bob)
  • ์˜ฎ๊ธด์ด: ๋ฐ•์žฌํ˜ธ, ์ดํ•ด์˜

 


 

์ด๋ฒˆ ์žฅ์—์„œ ์ด์•ผ๊ธฐํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ

 

์ด๋ฒˆ ์žฅ์—์„œ๋Š” ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์„ ์ž˜ ์ง“๋Š” ๋ช‡๊ฐ€์ง€ ๊ทœ์น™์„ ์ด์•ผ๊ธฐํ•œ๋‹ค.

 

Naming ์€ ์˜๋ฏธ๋ฅผ ํ•ด์„ํ•  ์ฑ…์ž„์ด ๋…์ž์—๊ฒŒ ์žˆ๋Š” ๋…ผ๋ฌธ ๋ชจ๋ธ์ด ์•„๋‹ˆ๋ผ ์˜๋„๋ฅผ ๋ฐํž ์ฑ…์ž„์ด ์žˆ๋Š” ์žก์ง€ ๋ชจ๋ธ์ด ์ ํ•ฉํ•˜๋‹ค

 

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

 

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

 

public List<int[]> getThem() {
  List<int[]> list = new ArrayList<>();

  for (int[] x : theList) {
    if (x[0] == 4)
      list.add(x);
  }

  return list;
}

 

  • ์œ„์˜ ์ฝ”๋“œ๋Š” ์ฝ”๋“œ ๋งฅ๋ฝ์ด ์ฝ”๋“œ ์ž์ฒด์— ๋ช…์‹œ์ ์œผ๋กœ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์Œ

 

public List<int[]> getFlaggedCells() {
  List<int[]> flaggedCells = new ArrayList<>();
  for (int[] cell : gameBoard) {
    // if ๋ฌธ์„ ๋ช…์‹œ์ ์ธ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    // --> cell.isFlagged()
    if (cell[STATUS_VALUE] == FLAGGED)
      flaggedCells.add(cell);
  }

  return flaggedCells;
}

 

  • ์ด๋ ‡๊ฒŒ ๊ฐ๊ฐ์˜ ์ด๋ฆ„์˜ ์˜๋„๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋“œ๋Ÿฌ๋‚ธ๋‹ค๋ฉด ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ด

 

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

 

  • ์•ฝ์–ด๋Š” ๋…์ž์—๊ฒŒ ๊ทธ๋ฆ‡๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Grouping ์„ ์œ„ํ•ด xxxList ๋ผ๋Š” ์ด๋ฆ„ ๋˜ํ•œ ๊ทธ๋ฆ‡๋œ ์ •๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค.
    • AccoutList (X) -- Accounts (O)
    • List ๋ผ๋Š” ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํŠน์ˆ˜ํ•œ ์˜๋ฏธ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฆ‡๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์…ˆ์ด๋‹ค
  • ์„œ๋กœ ํก์‚ฌํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•œ๋‹ค

 

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

 

  • ์ด๋ฆ„์ด ๋‹ฌ๋ผ์ง„๋‹ค๋ฉด ์˜๋ฏธ๋„ ๋‹ฌ๋ผ์ ธ์•ผ ํ•œ๋‹ค
    • void copyChar(char[] a1, char[] a2) ๋ณด๋‹ค๋Š” void copyChar(char[] source, char[] destination) ์ด ์ข‹๋‹ค.
  • ๋ถˆ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž
    • Account ์™€ AccountInfo ์— ์ฐจ์ด๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
    • Message ์™€ MessageString ์— ์ฐจ์ด๊ฐ€ ๋ฌด์—‡์ผ๊นŒ?

 

ํ•œ ๊ฐœ๋…์•„ ํ•œ ๋‹จ์–ด๋งŒ ์‚ฌ์šฉํ•˜๋ผ

 

  • ๋™์ผํ•œ ๊ฐœ๋… (fetch, get) ์ด ์žˆ์„ ๋•Œ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ๋‹ค๋ฅธ ๊ฐœ๋…์— ๊ฐ™์€ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ง์žฅ๋‚œ์ด๋‹ค
  • ๊ทธ๋ ‡๋‹ค๊ณ  ๋งฅ๋ฝ์ด ๋งž์ง€ ์•Š์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  add ์™€ insert ๋ฅผ ๊ตฌ๋ถ„์ง“์ง€ ์•Š๋Š” ํ–‰๋™์€ ์ข‹์ง€ ์•Š๋‹ค.
    • ๋งฅ๋ฝ์„ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค

 

์ด์™ธ์—๋„

 

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

 

๋‚˜์˜ ํ•ด์„๊ณผ ํšŒ๊ณ 

 

๋‚ด๊ฐ€ ์†ํ•œ ์กฐ์ง์˜ CTO ๋‹˜์€ ์ฝ”๋”ฉ์€ ๊ธ€์“ฐ๊ธฐ์™€ ๊ฐ™๋‹ค ๋ผ๋Š” ๋ง์„ ์ž์ฃผ ํ•˜์‹ ๋‹ค.

 

์ฝ”๋”ฉ์€ ๊ธ€์“ฐ๊ธฐ์™€ ๋น„์Šทํ•˜๊ธฐ์— ๋งŽ์ด ์จ๋ณด๊ณ  ์ฝ์–ด๋ด์•ผ ์‹ค๋ ฅ์ด ๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

 

์ด๋ฅผ ์‹ค์ฒœํ•˜๊ธฐ ์œ„ํ•˜ ๊ฐ€์žฅ ๋จผ์ € ํ•„์š”ํ•œ ๊ฐœ๋…์ด ๋ฐ”๋กœ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„ ์ง“๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

์ด๋Ÿฌํ•œ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„ ์ง“๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹จ์ง€ ๊ธฐ์ˆ  ๋Šฅ๋ ฅ, ๋น„์ฆˆ๋‹ˆ์Šค ์ดํ•ด๋„๋งŒ ๋†’์•„์„œ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„ค๋ช… ๋Šฅ๋ ฅ, ๋ฌธํ•™์  ๋ฐฐ๊ฒฝ์ด ํ•จ๊ป˜ ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

๋Œ“๊ธ€