Clean Code Form

Form

1.Coding Standards

๋ณ„๋„์˜ ๋ฌธ์„œ์— coding standards๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฝ”๋“œ ์ž์ฒด๊ฐ€ coding standards๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ปค๋ฉ˜ํŠธ๋Š” ์ฝ”๋“œ์— ๋‚˜์™€์žˆ๋Š” ๋‚ด์šฉ์„ ์ ์œผ๋ฉด ๊ฒฐ๊ตญ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ์ปค๋ฉ˜ํŠธ๋ผ ์ƒ๊ฐํ•˜๊ณ  ๋…์ž๋“ค์€ ์ฝ์ง€ ์•Š๊ฒŒ๋œ๋‹ค.

์ •์ž‘ ํ•„์š”ํ•œ ์ปค๋ฉ˜ํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ๋„ ์•„๋ฌด๋„ ๋ณด์ง€์•Š๊ฒŒ๋˜๋Š” ๋ถˆ์ƒ์‚ฌ๊ฐ€ ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.

2.Comments are Failures

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

3.Good Comments

๊ผญ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ์ปค๋ฉ˜ํŠธ ์ข…๋ฅ˜

  • Legal Comments(๋ฒ•์ )
  • informative Comments(์ •๋ณด)
    • ์ž…๋ ฅํ•ด์•ผ๋˜๋Š” ๋‚ ์งœ ํฌ๋ฉง์ŠคํŠธ๋ง, ํ˜•์‹๋“ฑ
  • Warning of Consequences(๊ฒฝ๊ณ ๋ฌธ)
    • ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š”๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด, ์ปค๋ฉ˜ํŠธ๋กœ ๊ฒฝ๊ณ ๋ฅผ ์คŒ
  • TODO Comments(ํ•ด์•ผํ• ์ผ, ๊ด€๋ฆฌํ• ์ผ)
  • Public API DOC(๊ณต๊ฐœ์ ์ธ ๋ฌธ์„œ๋“ค)

์œ„์˜ ๊ณตํ†ต์ ์ธ ๊ฒƒ๋“ค์€ ์‚ฌ์šฉ์ž๋“ค์ด ์•Œ๋ฉด ์ž‘์„ฑ์ž์—๊ฒŒ ๊ฐ์‚ฌํ•  ๊ฒƒ๋“ค์ด๋‹ค. ์ด๋Ÿฐ ๋‚ด์šฉ๋“ค์„ ์ปค๋ฉ˜ํŠธ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

4.Bad Comments

๋ฐ˜๋Œ€๋กœ ์ ์œผ๋ฉด ์•ˆ๋˜๋Š” ์ฝ”๋ฉ˜ํŠธ๋„ ์žˆ๋‹ค.

  • Mumbling
    • ๋ง์ด ๊ณ„์† ์ด์–ด์ง€๋Š” ํ•„์š”์—†๋Š” ์ •๋ณด๋“ค
  • Redundant Explanations
    • ์ฝ”๋“œ๋งŒ ๋ด๋„ ์•Œ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ๋“ค
  • Mandated Redundancy
    • ํ•จ์ˆ˜์—๋Œ€ํ•ด(์ž…์ถœ๋ ฅ) ๋‹ค์‹œ ์ปค๋ฉ˜ํŠธ๋กœ ์•Œ๋ ค์คŒ
  • Journal Comments
    • ์ž‘์„ฑ, ๋ณ€๊ฒฝ ์ •๋ณด(ํ˜•์ƒ๊ด€๋ฆฌ)
  • Noways Comments
    • ์˜ˆ์‹œ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ์ƒ์„ฑ์ž์— default constructor๋ผ๊ณ  ๋‹ค์‹œ ์•Œ๋ ค์ฃผ๋Š” ์ปค๋ฉ˜ํŠธ
  • Big Banner Comments
    • ๊ด‘๊ณ ๊ฐ™์ด ์ž˜๋ณด์ด๋ผ๊ณ  ์ž‘์„ฑํ•˜๋Š” ์ปค๋ฉ˜ํŠธ
  • Closing Brace Comments
    • ๋ฒ”์œ„์˜ ์‹œ์ž‘๊ณผ ๋์„ ์ž‘์„ฑ(๊ธฐ๋ณธ IDE์—์„œ ์ œ๊ณต)
  • Attribution Comments
    • ์ž‘์„ฑ์ž ์ปค๋ฉ˜ํŠธ
  • HTML in Comments
  • Non-Local In Information
    • ๊ด€๋ จ์žˆ๋Š” ์ฝ”๋“œ์™€ ๋™๋–จ์–ด์ง„๊ณณ์— ์ž‘์„ฑ

5.Vertical Formatting

๊ณต๋ž€์„ ๋งˆ๊ตฌ์žก์ด ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋…์ž๋“ค์—๊ฒŒ ํ˜ผ๋ž€์„ ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ด ์กด์žฌํ•œ๋‹ค.

์•„๋ž˜๋Š” ์ €์ž๊ฐ€ ์ฝ”๋“œ์—์„œ ๊ณต๋ž€ ํ‘œ๊ธฐ๋ฅผ ์ถ”์ฒœํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

  • ๋ฉ”์†Œ๋“œ ์‚ฌ์ด
  • private, public ๋ณ€์ˆ˜๋“ค ์‚ฌ์ด
  • ๋ณ€์ˆ˜ ์„ ์–ธ, ๋ฉ”์†Œ๋“œ ์‹คํ–‰์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์‚ฌ์ด
  • if, while ๋ธ”๋ก๊ณผ ๋‹ค๋ฅธ ์ฝ”๋“œ ์‚ฌ์ด

๊ด€๋ จ๋œ ๋ถ€๋ถ„๋“ค์„ ํ•œ๊ณณ์— ๊ฐ™์ด ๋†”๋‘๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•œ ํฌ์ธํŠธ์ด๋‹ค.

6.Classes

์•ž์„œ ๊ณ„์† ๋งํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ์ฒด๊ฐ„์˜ ์˜์กด์„ฑ์„ ๋‚ฎ์ถฐ์•ผํ•œ๋‹ค.

ํด๋ž˜์Šค๋Š” private ๋ณ€์ˆ˜๋“ค์„ public ํ•จ์ˆ˜๋กœ ์กฐ์ž‘ํ•˜๊ณ , private ๋ณ€์ˆ˜๋Š” ์™ธ๋ถ€์—์„œ ์กด์žฌํ•˜๋Š”์ง€ ์กฐ์ฐจ ๋ชฐ๋ผ์•ผํ•œ๋‹ค.

๊ทธ๋ ‡๊ธฐ์— getter, setter, property๋“ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ์„ค๊ณ„๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋…์ธ โ€œ์˜์กด์„ฑ์€ ๋‚ฎ๋˜, ๊ฒฐํ•ฉ๋„๋Š” ๋†’์•„ํ•œ๋‹คโ€๋ฅผ ์ง€ํ‚ค๋ ค๋ฉด getter, setter๋Š” ์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ๋‹ค. getter, setter๋Š” 10๊ฐœ์˜ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด 1๊ฐœ์”ฉ ๋ฐ–์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  getter๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜๋Š” ์—†๊ธฐ์—, ์ถ”์ƒํ™” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

image-20211015224622509

gallonsOfGas๋ณ€์ˆ˜๋ฅผ getPercentFuelRemaining()ํ•จ์ˆ˜๊ฐ€ ์ ‘๊ทผํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ๋Š” ์•Œ์ˆ˜๊ฐ€ ์—†๋‹ค. ์ด๊ฒƒ์ด ๋‹คํ˜•์„ฑ์„ ์ง€์›ํ•˜๋Š” ์ข‹์€ ์ฝ”๋“œ์ด๋‹ค.

์ฐธ์กฐ

  • ๋ฐฑ๋ช…์„์˜ ํด๋ฆฐ์ฝ”๋“œ Youtube ๊ฐ•์ขŒ