cleancode

1μž₯ κΉ¨λ—ν•œ μ½”λ“œ

{

{%/notice%}}

  • μ½”λ“œλŠ” μš”κ΅¬μ‚¬ν•­μ„ μƒμ„Ένžˆ ν‘œν˜„ν•˜λŠ” μˆ˜λ‹¨

    ( 기계가 μ‹€ν–‰ν•  μ •λ„λ‘œ μƒμ„Έν•˜κ²Œ μš”κ΅¬μ‚¬ν•­μ„ λͺ…μ‹œν•˜λŠ” μž‘μ—… = ν”„λ‘œκ·Έλž˜λ° )

  • μž‘μ„±μžκ°€ μ•„λ‹Œ μ‚¬λžŒλ„ 읽고 고치기 쉽고 λ‹¨μˆœν•˜κ³  직접적이닀.

  • 쀑볡을 ν”Όν•˜κ³  ν•œ κΈ°λŠ₯만 μˆ˜ν–‰ν•˜κ²Œ μž‘μ œ μΆ”μƒν™”ν•˜κΈ°

  • ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œλ₯Ό μ½λŠ” μ‹œκ°„ λŒ€ μ§œλŠ” μ‹œκ°„ λΉ„μœ¨μ΄ 9:1

  • 잘 μ§  μ½”λ“œλ„ μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ λ ˆκ±°μ‹œκ°€ λ˜λ‹ˆ μ‘°κΈˆμ”© μ½”λ“œλ₯Ό 정리/κ°œμ„ ν•˜μž

2μž₯ μ˜λ―ΈμžˆλŠ” 이름

  • 클래슀/λ©”μ„œλ“œ 이름

    • 클래슀 : λͺ…사, λͺ…사ꡬ가 적합

    • λ©”μ„œλ“œ : 동사, 동사ꡬ가 적합

  • μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ 밝히자 ( μ½”λ“œμ˜ λ§₯락이 μ½”λ“œμžμ²΄μ— λͺ…μ‹œμ μœΌλ‘œ λ“œλŸ¬λ‚΄μž)

  • 잘λͺ»λœ 정보λ₯Ό ν”Όν•˜μž

    • μ•½μ–΄λ₯Ό ν•¨λΆ€λ‘œ μ‚¬μš©ν•˜μ§€λ§μž

    • 0/O, l/1λ“±κ³Ό 같이 μ„œλ‘œ ν—·κ°ˆλ¦¬κ²Œ ν•˜λŠ” λ³€μˆ˜λͺ…을 μ§“μ§€λ§μž

  • 의미있게 κ΅¬λΆ„ν•˜μž

    • λ‹¨μˆœνžˆ μ»΄νŒŒμΌλŸ¬λ‚˜ 인터프리터λ₯Ό 톡과할 λͺ©μ μ˜ λ„€μ΄λ°ν•˜μ§€ 말자

    • a1,a2...와 같이 μ—°μ†λœ μˆ«μžλ‚˜, λΆˆμš©μ–΄λ₯Ό μ§€μ–‘ν•˜μž

    • ex. getAccount(),getAccounts(), getAccountInfo()와 같은 λ©”μ„œλ“œκ°€ μžˆλ‹€λ©΄ μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈ μ°Έκ°€μžλŠ” λ©”μ„œλ“œλ₯Ό κ΅¬λΆ„ν•˜κΈ° νž˜λ“€λ‹€.

  • λ°œμŒν•˜κΈ° μ‰¬μš΄ 이름을 μ‚¬μš©ν•˜μž

  • κ²€μƒ‰ν•˜κΈ° μ‰¬μš΄ 이름을 μ‚¬μš©ν•˜μž

    • κ°„λ‹¨ν•œ λ©”μ„œλ“œμ—μ„œ 둜컬 λ³€μˆ˜λŠ” ν•œ 문자λ₯Ό μ‚¬μš©ν•˜λ”λΌλ„ μƒμˆ˜λ‚˜ λŒ€λΆ€λΆ„μ˜ λ³€μˆ˜λŠ” κΈ΄ 이름이름이 κ²€μƒ‰ν•˜κΈ°μ—λ„ 더 νŽΈν•˜λ‹€.

      μš”μ¦˜ 쒋은 IDE듀은 λͺ‡μž 타이핑 μ•ˆν•΄λ„ μžλ™ μΆ”μ²œν•΄μ£Όλ‹ˆ 검색성λŠ₯ λ©΄μ—μ„œλŠ” 긴이름이 더 μ’‹λ‹€.

  • 인코딩을 ν”Όν•˜μž

    • λ§ˆμ°¬κ°€μ§€λ‘œ μš”μ¦˜ IDE듀은 μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜μ§€ μ•Šκ³ λ„ νƒ€μž… 였λ₯˜λ₯Ό 감지할 μ •λ„λ‘œ λ˜‘λ˜‘ν•˜κΈ° λ•Œλ¬Έμ— ν—κ°€λ¦¬μ•ˆ ν‘œκΈ°λ²•μ„ 지양 ν•˜μž

  • ν•œ κ°œλ…μ— ν•œ 단어λ₯Ό μ‚¬μš©ν•˜μž

    • fetch/get/retrieve λ‚˜ controller/manager/driver와 같이 λΉ„μŠ·ν•œ 의미의 단어λ₯Ό ν˜Όμš©ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 것을 μ§€μ–‘ν•˜μž

    • add/insert/append 와 같이 μΆ”κ°€ν•˜λŠ” λ©”μ„œλ“œλΌκ³  ν•˜λ”λΌκ³  λ§₯락이 λ‹€λ₯΄λ©΄ λ‹€λ₯Έ 단어λ₯Ό μ‚¬μš©ν•˜μž. ( μ˜λ„ λ₯Ό λͺ…ν™•ν•˜κ²Œ λ°νžˆλŠ” 것이 μ€‘μš”! )

3μž₯ ν•¨μˆ˜

κ°€λŠ₯ν•œ ν•œ μž‘κ³  ν•œκ°€μ§€ κΈ°λŠ₯만 μˆ˜ν–‰ν•˜λ„λ‘ μž‘μ„±ν•˜μž.

ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜λ‘œ booleanν˜• ν”Œλž˜κ·Έλ₯Ό λ„˜κΈ°λŠ” μˆœκ°„ ν•¨μˆ˜μ—μ„œ μ—¬λŸ¬κ°€μ§€ 일을 ν•˜λ„λ‘ ν•˜λŠ” 것이닀.

4μž₯ 주석

μ΅œλŒ€ν•œ μ½”λ“œλ‘œ μ˜λ„λ₯Ό ν‘œν˜„ν•˜μž.

법적인 λ‚΄μš©μ΄λ‚˜, 정보 제곡, κ²½κ³ , TODO등에 주석을 μ‚¬μš©ν•  수 μžˆλ‹€.

μ½”λ“œ μ»¨λ²€μ…˜

μ΅œλŒ€ν•œ ν”Όν•΄μ•Όν•  ν˜•μ‹λ“€μ΄ μ‘΄μž¬ν•˜κ³  κ°œκ°œμΈλ§ˆλ‹€ λ‹€λ₯΄μ§€λ§Œ, νŒ€μ˜ μ»¨λ²€μ…˜μ„ μ΅œμš°μ„ μ‹œ ν•˜μž

객체와 자료ꡬ쑰

λͺ¨λ“  뢀뢄이 객체지ν–₯으둜 지 수 μ—†κ³  이것이 μž₯점만 μžˆλŠ” 것은 μ•„λ‹ˆλ‹€. 자료ꡬ쑰,μ ˆμ°¨μ§€ν–₯이 더 μž₯점인 뢀뢄도 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— 적절히 μ‚¬μš©ν•˜μž.

였λ₯˜ 처리

쑰건문을 μ΄μš©ν•œ 였λ₯˜ μ½”λ“œλ³΄λ‹€ μ˜ˆμ™Έλ₯Ό λ˜μ§€λŠ” 것을 μ΄μš©ν•˜μž.

null을 전달, λ°˜ν™˜ν•˜μ§€ 말자.

읽기에 쒋은 μ½”λ“œλΏμ΄ μ•„λ‹Œ μ•ˆμ •μ„±λ„ 높은 νŠΌνŠΌν•˜κ³  κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜μž.

경계

짐 λ‰΄μ»€ν¬λŠ” κ°„λ‹¨ν•œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μž‘μ„±ν•΄ μ™ΈλΆ€ μ½”λ“œλ₯Ό μ΅νžˆλŠ” 방식을 ν•™μŠ΅ ν…ŒμŠ€νŠΈλΌκ³  λΆ€λ₯Έλ‹€.

이에 λ“œλŠ” λΉ„μš©μ€ κ³΅μ§œλŠ” μ•„λ‹ˆμ§€λ§Œ μ‹€μ œ 방식과 λ™μΌν•˜κ²Œ μž‘μ„±ν•œ μ΄λŸ¬ν•œ μΌ€μ΄μŠ€λŠ” νŒ¨ν‚€μ§€μ˜ 버전 이전도 더 μ‰½κ²Œ 도와쀀닀.

ν…ŒμŠ€νŠΈ

이 책은 ν…ŒμŠ€νŠΈ, TDD에 λŒ€ν•΄ κ½€λ‚˜ νž˜μ„ μ‹€μ–΄μ£Όκ³  μžˆλ‹€.

μ‹€μ œ μ½”λ“œλ³΄λ‹€ μ€‘μš”ν•˜λ©° 쒋은 ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ 쒋은 μ‹€μ œ μ½”λ“œλ₯Ό λ§Œλ“€μ–΄ λ‚Έλ‹€κ³  ν•˜κ³  μžˆλ‹€.

Last updated