Clean Code 3μž₯

Clean Code 독후감

Posted by Bangjinhyuk on September 21, 2021 · 3 mins read

Clean code 3μž₯

ν•¨μˆ˜

1. μž‘κ²Œ λ§Œλ“€μ–΄λΌ.

  • ν•¨μˆ˜λŠ” μž‘μ„μˆ˜λ‘ μ’‹λ‹€. 이 μ±…μ—λŠ” 20쀄도 κΈΈλ‹€κ³  λ§ν•œλ‹€. ν˜„μž¬ κ°œλ°œμ€‘μΈ ν”„λ‘œμ νŠΈμ—μ„œ μ€‘μš” κΈ°λŠ₯ ν•¨μˆ˜κ°€ 160쀄 정도이닀…
  • ifλ¬Έ, elseλ¬Έ, while 문에 λ“€μ–΄κ°€λŠ” 블둝은 ν•œμ€„μ΄μ–΄μ•Ό ν•œλ‹€. κ·Έ ν•œμ€„μ€ λ‹€μ‹œ λŒ€κ°œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€.

2. ν•œκ°€μ§€λ§Œ 해라.

  • ν•¨μˆ˜λŠ” ν•œκ°€μ§€λ₯Ό ν•΄μ•Ό ν•œλ‹€. κ·Έ ν•œκ°€μ§€λ₯Ό μž˜ν•΄μ•Ό ν•œλ‹€. κ·Έ ν•œ κ°€μ§€λ§Œμ„ ν•΄μ•Όν•œλ‹€.

3. ν•¨μˆ˜ λ‹Ή 좔상화 μˆ˜μ€€μ€ ν•˜λ‚˜λ‘œ.

  • ν•œ ν•¨μˆ˜ 내에 좔상화 μˆ˜μ€€μ„ μ„žμœΌλ©΄ μ½”λ“œλ₯Ό μ½λŠ” μ‚¬λžŒμ΄ ν—·κ°ˆλ¦°λ‹€.
  • λ‚΄λ €κ°€κΈ° κ·œμΉ™: μœ„μ—μ„œ μ•„λž˜λ‘œ μ΄μ•ΌκΈ°μ²˜λŸΌ μ½νžˆλŠ” 방식 -> μœ„μ—μ„œ μ•„λž˜λ‘œ λ‚΄λ €κ°ˆμˆ˜λ‘ ν•¨μˆ˜ 좔상화 μˆ˜μ€€μ΄ ν•œλ‹¨κ³„μ”© λ‚΄λ €κ°„λ‹€.

4. Switch λ¬Έ

  • 읽고 μ΄ν•΄ν•˜κΈ° μ–΄λ €μ› λ˜ 뢀뢄이닀.
  • switch 문을 좔상 νŒ©ν† λ¦¬μ— 숨기면 λœλ‹€λŠ” λœ»μ΄λ‹€. 좔상 클래슀λ₯Ό λ§Œλ“€μ–΄ ν•¨μˆ˜λ₯Ό μƒμ„±ν•˜μ—¬ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 ν˜ΈμΆœλ˜λŠ” 과정이닀.

5. μ„œμˆ μ μΈ 이름을 μ‚¬μš©ν•˜λΌ.

  • ν•¨μˆ˜ 이름을 ν•¨μˆ˜κ°€ ν•˜λŠ” 일을 더 잘 ν‘œν˜„ν•  수 있게 λ§Œλ“€μ–΄λΌ.
  • 이름을 λΆ™μΌλ•ŒλŠ” 일관성도 μ€‘μš”ν•˜λ‹€.

6. ν•¨μˆ˜ 인수

  • 이상적인 μΈμˆ˜λŠ” 0κ°œμ΄λ‹€. μΈμˆ˜λŠ” μ μ„μˆ˜λ‘ μ’‹λ‹€.
  • 단항 ν˜•μ‹ : μΈμˆ˜μ— μ§ˆλ¬Έμ„ λ˜μ§€λŠ” 경우, 인수λ₯Ό λ­”κ°€λ‘œ λ³€ν™˜ν•΄ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” 경우, 두 경우λ₯Ό μ œμ™Έν•˜κ³  μ‚¬μš©μ€ 가급적 ν”Όν•œλ‹€.
  • ν”Œλž˜κ·Έ 인수: ν•¨μˆ˜λ‘œ bool 값을 λ„˜κΈ°λŠ” ν˜•μ‹, μ‚¬μš©ν•˜μ§€ 말자
  • μ΄ν•­ν•¨μˆ˜: μΈμˆ˜κ°€ 무쑰건 λ‘κ°œμ—¬μ•Ό ν•˜λŠ” 경우λ₯Ό μ œμ™Έν•˜κ³  λ‹¨ν•­ν•¨μˆ˜λ‘œ λ°”κΎΈκ³ μž λ…Έλ ₯을 ν•΄μ•Όν•œλ‹€.
  • μ‚Όν•­ν•¨μˆ˜: μ‚Όν•­ν•¨μˆ˜λŠ” λ³Όλ•Œλ§ˆλ‹€ μ΄ν•΄ν•˜κΈ° μ—¬λ ΅λ‹€. κ·ΈλŸ¬λ―€λ‘œ μ •λ§λ‘œ ν•„μš”ν• λ•Œλ§Œ μ“°μž
  • 인수 객체: 객체λ₯Ό μƒμ„±ν•˜μ—¬ 인수λ₯Ό μ€„μ΄λŠ” 방식도 μ’‹λ‹€. 객체λ₯Ό μƒμ„±ν•˜λŠ”κ²ƒ μžμ²΄κ°€ κ°œλ…μ„ μ„€λͺ…ν•˜λŠ”κ²ƒκ³Ό κ°™κΈ° λ•Œλ¬Έμ΄λ‹€.
  • 동사와 ν‚€μ›Œλ“œ: 단항 ν•¨μˆ˜λŠ” ν•¨μˆ˜μ™€ μΈμˆ˜κ°€ 동사/ λͺ…μ‚¬μŒμ„ 이뀄야 ν•œλ‹€. ex) writeField(name), λ‹€ν•­ ν•¨μˆ˜λ“€μ€ ν•¨μˆ˜ 이름에 μΈμˆ˜λ“€μ˜ ν‚€μ›Œλ“œλ₯Ό λ„£μ–΄μ£Όλ©΄ μˆœμ„œλ₯Ό κΈ°μ–΅μ•ˆν•΄λ„ λ˜λ―€λ‘œ μ’‹λ‹€.

7. λΆ€μˆ˜ 효과λ₯Ό μΌμœΌν‚€μ§€ 말아라.

  • ν•¨μˆ˜ μ΄λ¦„μœΌλ‘œ μ•Œμˆ˜ μžˆλŠ” κΈ°λŠ₯λ“€ μ΄μ™Έμ˜ μž‘μ€ κΈ°λŠ₯이라도 ν¬ν•¨λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.
  • 예λ₯Όλ“€μ–΄ λΉ„λ°€λ²ˆν˜Έ ν™•μΈμ΄λΌλŠ” ν•¨μˆ˜μ—μ„œ μ„Έμ…˜μ„ μ΄ˆκΈ°ν™” ν•˜λŠ” κΈ°λŠ₯을 넣지 μ•ŠλŠ”κ²ƒμ΄ μ’‹λ‹€. μ˜ˆμƒν• μˆ˜ μ—†κΈ° λ•Œλ¬Έμ—.

8. λͺ…λ Ήκ³Ό 쑰회λ₯Ό λΆ„λ¦¬ν•˜λΌ.

  • ν•¨μˆ˜λŠ” λ­”κ°€λ₯Ό μˆ˜ν–‰ν•˜κ±°λ‚˜ 뭔가에 λ‹΅ν•˜κ±°λ‚˜ λ‘˜μ€‘ ν•˜λ‚˜λ§Œ ν•΄μ•Όν•œλ‹€.

9. 였λ₯˜μ½”λ“œ λ³΄λ‹€λŠ” μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜μž.

  • μ–΄λ– ν•œ ν•¨μˆ˜μ—μ„œ 였λ₯˜ μ½”λ“œλ₯Ό λ¦¬ν„΄ν•˜λŠ”κ²ƒλ³΄λ‹€ μ˜ˆμ™Έ 처리λ₯Ό 톡해 처리 ν•˜λŠ”κ²ƒμ΄ κΉ”λ”ν•˜λ‹€.
  • ν•˜μ§€λ§Œ ν•¨μˆ˜μ— κ·Έλƒ₯ λ„£μœΌλ©΄ μ½”λ“œμ˜ ν˜Όλž€μ΄ μ•ΌκΈ° 될수 μžˆκΈ°λ•Œλ¬Έμ— try/catch문을 λ”°λ‘œ ν•¨μˆ˜λ‘œ λΉΌλŠ”κ²ƒμ΄ μ’‹λ‹€. ->였λ₯˜ μ²˜λ¦¬λ„ ν•œκ°€μ§€ μž‘μ—…μ— μ†ν•œλ‹€.

10. λ°˜λ³΅ν•˜μ§€ 말아라.

  • λ°˜λ³΅λ˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ 쀄인닀. μ•Œκ³ λ¦¬μ¦˜μ΄ λ°”λ€Œλ©΄ λͺ¨λ“  μ½”λ“œλ₯Ό μˆ˜μ •ν•΄μ•Ό ν•œλ‹€.

11. ꡬ쑰적 ν”„λ‘œκ·Έλž˜λ°

  • μž‘μ€ ν•¨μˆ˜μ—μ„œ return,break,continueλ₯Ό μ—¬λŸ¬μ°¨λ‘€ μ‚¬μš©ν•΄λ„λ˜μ§€λ§Œ goto 문은 자제 ν•˜λŠ”κ²ƒμ΄ μ’‹λ‹€.

12. ν•¨μˆ˜λ₯Ό μ§œλŠ”λ°©λ²•

  • μ²˜μŒμ—λŠ” κΈΈκ³  λ³΅μž‘ν•œ ν•¨μˆ˜λ₯Ό μž‘μ„±
  • ν•˜μ§€λ§Œ κ·Έ μ½”λ“œλ“€μ„ λͺ¨λ‘ ν…ŒμŠ€νŠΈ ν•˜λŠ” λ‹¨μœ„ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 생성 ν•˜κΈ°
  • μ½”λ“œλ₯Ό 닀듬고 ν•¨μˆ˜λ₯Ό λ§Œλ“€κ³ , 이름을 λ°”κΎΈκ³ , 쀑볡을 μ œκ±°ν•˜κ³  , λ©”μ†Œλ“œλ₯Ό 쀄이고 μˆœμ„œλ₯Ό λ°”κΎΈλ©° λ‹¨μœ„ν…ŒμŠ€νŠΈλ₯Ό λͺ¨λ‘ ν†΅κ³Όν•˜λ„λ‘ λ§Œλ“€μ–΄μ€€λ‹€.

3μž₯을 읽고 ν•¨μˆ˜λ₯Ό μ§œλŠ” 방법에 λŒ€ν•΄μ„œ 배우게 λ˜μ—ˆλ‹€. ν˜„μž¬ μ§„ν–‰ν•˜λŠ” ν”„λ‘œμ νŠΈμ˜ ν•¨μˆ˜λ“€λ„ ν˜„μž¬ μ€‘λ³΅λœ μ•Œκ³ λ¦¬μ¦˜μ΄ 많고 이름도 κ·œμΉ™μ΄ μ—†μœΌλ©° ν•œ ν•¨μˆ˜λŠ” λ§Žμ€ 일듀을 ν•˜κ³  닀듬어 지지 μ•Šμ€ μƒνƒœμ΄λ‹€. λ”°λΌμ„œ λ‚˜λŠ” 이제 3μž₯μ—μ„œ 배운 λ‚΄μš©λ“€μ„ λ‚΄κ°€ μ§„ν–‰ν•˜λŠ” ν”„λ‘œμ νŠΈ ν•¨μˆ˜μ— μ μš©μ‹œμΌœ ν•¨μˆ˜λ₯Ό 잘 λ§Œλ“€μ–΄ 봐야겠닀.

λ§¨μœ„λ‘œπŸ‘†