CleanCode TIL (2022.01.24)

Henry Choยท2022๋…„ 1์›” 24์ผ
0

๋…ธ๊ฐœ๋ถ

๋ชฉ๋ก ๋ณด๊ธฐ
4/31

DAY 4

๐Ÿ”–ย ์˜ค๋Š˜ ์ฝ์€ ๋ฒ”์œ„ : 2์žฅ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„ (22~31p)


๐Ÿค“ย ์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ

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

  • ์ข‹์€ ์ด๋ฆ„์„ ์ง€์œผ๋ ค๋ฉด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€๋งŒ ์ข‹์€ ์ด๋ฆ„์œผ๋กœ ์ ˆ์•ฝํ•˜๋Š” ์‹œ๊ฐ„์ด ํ›จ์”ฌ ๋” ๋งŽ๋‹ค.
  • ๋”ฐ๋กœ ์ฃผ์„์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์˜๋„๋ฅผ ๋ถ„๋ช…ํžˆ ๋“œ๋Ÿฌ๋‚ด์ง€ ๋ชปํ•œ ๊ฒƒ

์งˆ๋ฌธ์— ๋‹ตํ•˜๋ผ

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

๊ฐœ๋…์— ์ด๋ฆ„์„ ๋ถ™์—ฌ๋ผ

public List<Cell> getFlaggedCells() {
    List<Cell> flaggedCells = new ArrayList<Cell>();
    for (Cell cell : gameBoard)
        if (cell.isFlagged())
        flaggedCells.add(cell);
    return flaggedCells; 
}

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

  • ์ž์‹ ์—๊ฒŒ๋งŒ ํŽธํ•œ ์•ฝ์–ด โŒ
  • type๊ณผ ์ผ์น˜ํ•˜์ง€์•Š๋Š” suffix โŒย (์ผ์น˜ํ•ด๋„ ์™ ๋งŒํ•˜๋ฉด ์ƒ๋žต)
  • ์†Œ๋ฌธ์ž โ€˜lโ€™ ์ด๋‚˜ ๋Œ€๋ฌธ์ž โ€˜Oโ€™ ๋ฅผ ์•ฝ์–ด๋กœ ์“ฐ๊ธฐ โŒ

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

  • ์—ฐ์†์ ์ธ ์ˆซ์ž๋ฅผ ๋ง๋ถ™์ธ ์ด๋ฆ„ โŒ
  • Info, Data, a, an, The, var, table, string, amount, message ๊ฐ™์€์˜๋ฏธ ์—†๋Š” ๋ถˆ์šฉ์–ด์ถ”๊ฐ€ โŒ

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

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์‚ฌํšŒํ™œ๋™์ด๋‹ค โ†’ ์  ์•ผ๋ฌด๋‹คํž˜์ฆˆgenymdhms โŒ

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

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

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

๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์ ‘๋‘์–ด

  • m_ ๊ฐ™์€ ์ ‘๋‘์–ด โŒย โ†’ ๋‹ค๋ฅธ ์ƒ‰์ƒ IDE๋ฉด ์ถฉ๋ถ„

์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค

  • ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ๊ตฌํ˜„ ํด๋ž˜์Šค์— ์ธ์ฝ”๋”ฉ์„ ํ•˜์ž ์ธํ„ฐํŽ˜์ด์Šค: ShapeFactory ๊ตฌํ˜„ ํด๋ž˜์Šค: CShapeFactory or ShapeFactoryImp

๐Ÿค”ย ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ

  • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ• ๋•Œ๋งˆ๋‹ค ํ•ญ์ƒ ์ด๊ฑด ๋„ˆ๋ฌด verboseํ•œ๊ฐ€? ๊ณ ๋ฏผํ•˜๋˜ ์‹œ๊ธฐ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ณ€์ˆ˜๊ฐ€ ๊ธธ๋ฉด ์˜คํžˆ๋ ค ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์‹ ์„ ํ•œ ์ถฉ๊ฒฉ์ด ๊ทธ ๊ณ ๋ฏผ์—์„œ ๋‚˜๋ฅผ ํ•ด๋ฐฉ ์‹œ์ผœ์ฃผ์—ˆ๋‹ค!

๐Ÿ”Žย ์งˆ๋ฌธ

  • ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด๋‚˜๋„ ๊ธด ๋ณ€์ˆ˜๋Š” ์ค„์ด๊ธดํ•ด์•ผํ•˜๋Š”๋ฐ ๊ทธ๋Ÿฐ ๋…ธํ•˜์šฐ๋„ ์•Œ๊ณ ์‹ถ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Oracle์˜ Object๋ช…์€ 30์ž๋กœ ์ œํ•œ ๋˜์–ด์žˆ์–ด ๋•Œ๋กœ๋Š” ์ผ๊ด€์„ฑ์„ ๊นจ๊ณ  session์„ sess ๋ผ๊ณ  ์“ฐ๋Š” ๋“ฑ์˜ ์ถ•์•ฝ์„ ํ•œ๋‹ค.

๐Ÿ“ย ์†Œ๊ฐ 3์ค„ ์š”์•ฝ

  • ์ข‹์€ ์ด๋ฆ„์„ ์ง€์œผ๋ ค๋ฉด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€๋งŒ ์ข‹์€ ์ด๋ฆ„์œผ๋กœ ์ ˆ์•ฝํ•˜๋Š” ์‹œ๊ฐ„์ด ํ›จ์”ฌ ๋” ๋งŽ๋‹ค.
  • ๋ณ€์ˆ˜๊ฐ€ ๊ธธ๋ฉด ์˜คํžˆ๋ ค ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ์  ์•ผ๋ฌด๋‹คํž˜์ฆˆ ๊ธˆ์ง€.
profile
Full stack tech visionary

0๊ฐœ์˜ ๋Œ“๊ธ€