λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

개발

ν† λΉ„μ˜ 클린 μŠ€ν”„λ§ κ°•μ—° μš”μ•½

πŸ“Œ 핡심 λ©”μ‹œμ§€ μš”μ•½

1. 클린 μ½”λ“œμ˜ μ˜€ν•΄

  • “μž‘λ™ν•˜μ§€ μ•ŠλŠ” 클린 μ½”λ“œ”λ₯Ό μΆ”κ΅¬ν•˜λŠ” 잘λͺ»λœ κ²½ν–₯
    • μž‘λ™ν•˜μ§€ μ•ŠλŠ” 클린 μ½”λ“œ?
      • 클린 μ½”λ“œλ₯Ό μΆ”κ΅¬ν•˜κΈ°μ— 주석은 μž‘μ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.
      • μ½”λ“œκ°€ ν΄λ¦°ν•΄μ„œ λ¦¬νŒ©ν„°λ§ν•  μ΄μœ κ°€ μ—†λ‹€.
      • 클린 μ½”λ“œλŠ” 버그가 μ μ–΄μ„œ ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ 없어도 λ˜μ§€ μ•Šλ‚˜?
      • 클린 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•΄μ„œ 일정을 지킬 수 μ—†λ‹€.
      • 클린 μ½”λ“œ 원칙에 μœ„λ°°λ˜μ–΄μ„œ 리뷰λ₯Ό μŠΉμΈν•  수 μ—†μŠ΅λ‹ˆλ‹€.
    • 클린 μ½”λ“œλŠ” 원칙 μ§€ν–₯ 개발, μ½”λ“œ 결벽증이 μ•„λ‹ˆλ‹€.
  • μ£Όλ‹ˆμ–΄, κ²½λ ₯ λͺ¨λ‘ 클린 μ½”λ“œ κ°•λ°•μœΌλ‘œ κ΅¬ν˜„ λŠ₯λ ₯, 속도가 μ €ν•˜

 

2. 클린 μ½”λ“œμ˜ λ³Έμ§ˆμ€ ‘μž‘λ™’κ³Ό ‘μœ μ§€λ³΄μˆ˜μ„±’

  • Clean Code that works (μž‘λ™ν•˜λŠ” 클린 μ½”λ“œ). - λ‘  μ œν”„λ¦¬μ¦ˆ-
  • μœ μ§€λ³΄μˆ˜μ„±μ€ λͺ¨λ“  ν’ˆμ§ˆ μ§€ν‘œλ₯Ό 포괄
    • ν’ˆμ§ˆμ— κ΄€ν•œ μš”κ΅¬μ‚¬ν•­(λΉ„ κΈ°λŠ₯적 μš”κ΅¬μ‚¬ν•­)μ—μ„œ μœ μ§€λ³΄μˆ˜μ„±μ€ νŠΉλ³„ν•˜λ‹€.
      • μ™œ νŠΉλ³„ν•œκ°€? λ‚˜λ¨Έμ§€ ν’ˆμ§ˆκ³Ό κ΄€λ ¨λœ λͺ¨λ“  μ§€ν‘œλ“€μ„ ν¬κ΄„ν•˜κ³  있기 λ•Œλ¬Έμ΄λ‹€.
      • μœ μ§€λ³΄μˆ˜ν•˜κΈ° 쒋은 μ½”λ“œλŠ” ν™•μž₯ν•˜κΈ° 쉽고, μ•ˆμ „ν•˜κ³ , μ‹ λ’°ν•  수 있고, 쒋은 μ„±λŠ₯으둜 λ°œμ „ μ‹œν‚¬ 수 있고, μƒν˜Έ ν˜Έν™˜μ„±μ΄ λ›°μ–΄λ‚˜μ„œ λ³€κ²½ν•˜κΈ° 쉽닀.
      • μœ μ§€λ³΄μˆ˜μ„±μ€ μ½”λ“œμ˜ λ³€κ²½ κ°€λŠ₯μ„±κ³Ό λ™μ˜μ–΄

 

3. 생산성과 μœ μ§€λ³΄μˆ˜μ„±μ˜ μ‘°ν™”

  • 생산성 ↔ μœ μ§€λ³΄μˆ˜μ„±μ€ μ„œλ‘œ 배타적이지 μ•ŠμŒ, λ¦¬νŒ©ν„°λ§κ³Ό ν…ŒμŠ€νŠΈλ‘œ κ· ν˜• κ°€λŠ₯
    • ν…ŒμŠ€νŠΈλ₯Ό λΉ λ₯΄κ³  효과적으둜 μž‘μ„±ν•˜λ©΄μ„œ κ°œλ°œν•˜λŠ” λŠ₯λ ₯이 ν•„μš”.
  • 개발 μ‹œμž‘μ€ λΉ λ₯΄κ³  κ°„λ‹¨ν•˜κ²Œ
    • μ΅μˆ™ν•œ 기술둜
    • 핡심 κΈ°λŠ₯이
    • λ™μž‘ν•˜λŠ”
    • κ°€μž₯ λ‹¨μˆœν•œ μ½”λ“œλ₯Ό
    • λ¦¬νŒ©ν„°λ§ ν•˜κΈ° μ’‹κ²Œ μž‘μ„±

 

4. 기술 뢀채와 λ¦¬νŒ©ν„°λ§

”뢀채가 μ§€μ†μ μœΌλ‘œ 효과λ₯Ό λ°œνœ˜ν•˜λ €λ©΄ λ¦¬νŒ©ν„°λ§(λΆ€μ±„μƒν™˜)이 동λ ₯이 λ˜μ–΄μ•Ό ν•œλ‹€.”

  • λΉ λ₯΄κ²Œ κ΅¬ν˜„ → ν•™μŠ΅ → λ¦¬νŒ©ν„°λ§μœΌλ‘œ μƒν™˜
    • 전체 과정이 뢀채 μƒν™˜. 즉, λ¦¬νŒ©ν„°λ§!
    • μ²˜μŒλΆ€ν„° μ™„λ²½ν•œ μ½”λ“œλŠ” μ—†λ‹€.
  • λΆ€μ±„λŠ” ‘λ‚˜μœ μ½”λ“œ’의 λ³€λͺ… μ•„λ‹˜
  • μ²˜μŒλΆ€ν„° λ¦¬νŒ©ν„°λ§ν•˜κΈ° 쒋은 μ½”λ“œλ₯Ό λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.
  • 일뢀 κΈ°λŠ₯을 μ™„λ²½ν•˜κ²Œ λ§Œλ“œλŠ” κ²ƒμœΌλ‘œ μ‹œμž‘(X)

 

 

5. 클린 μ½”λ“œλŠ” νŒ€μ„ μœ„ν•œ 것

  • λ‚˜λ§Œμ˜ 클린 μ½”λ“œλž€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ
    • 클린 μ½”λ“œμ˜ λ§Žμ€ 원칙은 상황에 따라 λ‹€λ₯Έ 기쀀을 κ°€μ§ˆ 수 μžˆλ‹€.
  • μΉœμ ˆν•œ κ°œλ°œμžκ°€ 되기
    • ν•΄μ•Ό 될 μ΄μ•ΌκΈ°λŠ” ν•˜λ˜ λ‹€λ₯Έ μ‚¬λžŒμ˜ 기뢄을 λ‚˜μ˜μ§€ μ•Šκ²Œ ν•˜λŠ” 것
    • ν•¨κ»˜ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³ , 읽고, λ³€κ²½ν•  λ™λ£Œ κ°œλ°œμžλ“€μ—κ²Œ μΉœμ ˆν•œ μ½”λ“œ
  • νŒ€κ³Ό ν•¨κ»˜ νƒν—˜ν•˜μž.

 

6. ν† λΉ„μ˜ 6λŒ€ 원칙

  1. μ±…μž„μ— μΆ©μ‹€ν•˜κ³  μ˜μ‘΄κ΄€κ³„ μœ μ—°ν•œ 객체 섀계
  2. ꡬ성 μ •λ³΄μ˜ 클린화 (ex. yml, properties, …)
  3. ν—₯사고날 μ•„ν‚€ν…μ²˜
  4. 계측과 λͺ¨λ“ˆ κ²½κ³„λŠ” μΈν„°νŽ˜μ΄μŠ€ 기반 뢄리
  5. ν…ŒμŠ€νŠΈ 쀑심 개발
  6. DB ν…ŒμŠ€νŠΈμ—λŠ” @Transactional μ‚¬μš©