Skip to content

πŸ› οΈ BE μ½”λ“œ μ»¨λ²€μ…˜

jinwoo22 edited this page Aug 2, 2024 · 6 revisions

1. import문 섀정

  • μˆœμ„œ : μΈν…”λ¦¬μ œμ΄ Code Style - Java - Import Layoutμ—μ„œ Layout static imports separately μ μš©ν•œλ‹€.
import all other imports
import javax.*
import java.*
<blank line>
import static all other imports
  • wildcard : μΈν…”λ¦¬μ œμ΄ Code Style - Java - Classcount to use … 및 Names count to use … 99둜 μ„€μ •ν•œλ‹€.

2. μŠ€νƒ€μΌ 파일

  • μΈν…”λ¦¬μ œμ΄ Code Style - Java - Schemaμ—μ„œ WootecoStyle μ μš©ν•˜μ—¬ μΌκ΄„μ μœΌλ‘œ μ½”λ“œ μŠ€νƒ€μΌμ„ λ§žμΆ˜λ‹€.

3. νŒ¨ν‚€μ§€ ꡬ쑰

  • νŒ¨ν‚€μ§€ κ΅¬μ‘°λŠ” λ„λ©”μΈν˜•μœΌλ‘œ ν•œλ‹€.

    • κ³„μΈ΅ν˜•μœΌλ‘œ ν–ˆμ„ λ•Œμ— νŒ¨ν‚€μ§€ μ•ˆμ— ν΄λž˜μŠ€κ°€ μŒ“μ΄λ©° 가독성이 떨어진 κ²½ν—˜μ΄ μžˆλ‹€.
    • λ„λ©”μΈμœΌλ‘œ λ‚˜λˆŒ 경우 각 κΈ°λŠ₯에 따라 λ‚˜λ‰˜μ–΄ μžˆμ–΄μ„œ μ²˜μŒλΆ€ν„° νŒŒμ•…ν•˜κΈ° μš©μ΄ν•˜λ‹€.
  • νŒ¨ν‚€μ§€ 이름은 λ‹€μŒκ³Ό κ°™λ‹€.

    - domain
        - controller
        - service
        - domain
        - repository
    

5. Controller

  • μƒνƒœ μ½”λ“œ μ‰½κ²Œ μ„€μ •ν•˜κΈ° μœ„ν•΄ ResponseEntityλ₯Ό μ‚¬μš©ν•œλ‹€.

6. Service

  • DTOλ₯Ό νŒŒλΌλ―Έν„°λ‘œ λ°›κ³ , DTOλ₯Ό λ°˜ν™˜ν•œλ‹€.
  • λ³€κ²½ 감지 κΈ°λŠ₯ ν™œμš©ν•œλ‹€.

7. Domain

  • equals & toString & hashcode
    • domain 및 entityμ—μ„œ λͺ¨λ‘ μž¬μ •μ˜ν•œλ‹€.
    • equals μ‹œ id만 λΉ„κ΅ν•œλ‹€.
  • idλŠ” Long νƒ€μž…μ„ μ‚¬μš©ν•œλ‹€.

8. Repository

  • repository element 없을 λ•Œ get ν•¨μˆ˜λ₯Ό μΆ”κ°€λ‘œ μž‘μ„±ν•΄ findμ‹œ empty일 경우 μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚¨λ‹€.

9. DTO

static λ©”μ„œλ“œ

  • from : νŒŒλΌλ―Έν„°μ˜ κ°œμˆ˜κ°€ 1개일 경우 μ‚¬μš©ν•œλ‹€.
  • of : νŒŒλΌλ―Έν„°μ˜ κ°œμˆ˜κ°€ 2개 이상일 경우 μ‚¬μš©ν•œλ‹€.
  • toEnity, toDamain μ‚¬μš©ν•œλ‹€.

9. 였λ₯˜ 및 μ˜ˆμ™Έμ²˜λ¦¬

  • handlerλ₯Ό μ‚¬μš©ν•˜μ—¬ μ²˜λ¦¬ν•œλ‹€.
  • μ—λŸ¬ λ©”μ‹œμ§€λŠ” Enum으둜 κ΄€λ¦¬ν•œλ‹€. λ”°λ‘œ μ»€μŠ€ν…€ μ˜ˆμ™Έ 클래슀λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • ErrorHandler둜 λ“€μ–΄μ˜€λŠ” 것듀은 둜그λ₯Ό 남기고, μΆ”ν›„ ν•„μš”ν•œ 것듀에 λŒ€ν•΄μ„œλŠ” 개인적 νŒλ‹¨μœΌλ‘œ 둜그λ₯Ό 남긴닀.

10. 곡톡 μŠ€νƒ€μΌ κ°€μ΄λ“œ

λ©”μ„œλ“œ

  • public λ©”μ„œλ“œλ‚΄μ˜ private λ©”μ„œλ“œλŠ” public λ©”μ„œλ“œμ™€ κ°€κΉŒμš΄ μ•„λž˜ μœ„μΉ˜μ‹œν‚¨λ‹€.
  • private이 계속 μ‚¬μš©λ  경우, κ°€μž₯ 처음 μ‚¬μš©ν•œ public λ©”μ„œλ“œ μ•„λž˜μ— μœ„μΉ˜ν•œλ‹€.
  • μ»¨νŠΈλ‘€λŸ¬μ™€ μ„œλΉ„μŠ€μ—μ„œ λͺ¨λ‘ create, read, update, delete둜 μž‘μ„±ν•˜κ³ , CRUD μˆœμ„œλŒ€λ‘œ μ •λ ¬ν•œλ‹€.
    • ν˜‘μ—…ν•  λ•Œ 처음 ν•΄λ‹Ή μ½”λ“œλ₯Ό λ³΄λŠ” μ‚¬λžŒμ΄ 순차적으둜 μ½”λ“œ 의미 νŒŒμ•…ν•˜κΈ°κ°€ 더 μš©μ΄ν•˜λ‹€.

κ°œν–‰

  • class 첫 ν•„λ“œλŠ” ν•œ 쀄 κ°œν–‰ ν›„ μž‘μ„±ν•œλ‹€.
  • class λ§ˆμ§€λ§‰ μ€‘κ΄„ν˜ΈλŠ” method λ§ˆμ§€λ§‰ μ€‘κ΄„ν˜Έ ν•œ 쀄 μ•„λž˜ μœ„μΉ˜ν•˜λ„λ‘ ν•œλ‹€.
  • λ©”μ„œλ“œ λ‚΄μ˜ κ°œν–‰μ€ 논리적 λ‹¨μœ„λ‘œ μ‚½μž…ν•œλ‹€.

μ–΄λ…Έν…Œμ΄μ…˜

  • μ–΄λ…Έν…Œμ΄μ…˜ μ •λ ¬ μˆœμ„œλŠ” μ€‘μš”λ„κ°€ 높은 것뢀터 클래슀 κ°€κΉŒμ΄ λ‘”λ‹€.
  • 둬볡 λ“± getter, setter μžλ™ 생성 μ–΄λ…Έν…Œμ΄μ…˜μ€ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

yml

  • OSIV μ„€μ • 끄고 μ‹œμž‘ν•œλ‹€.

11. ν…ŒμŠ€νŠΈ

DisplayName

  • [κΈ°λŠ₯] 성곡 : ~ 경우 (μƒλž΅ κ°€λŠ₯)
    • ex) νšŒμ›κ°€μž… 성곡, νšŒμ›κ°€μž… μ‹€νŒ¨: 이메일 쀑볡인 경우
  • (긍정) λ©”μ„œλ“œλͺ… + 상황 μžˆμ„ 경우 _상황
    • ex) login / save
  • (λΆ€μ •) λ©”μ„œλ“œλͺ…_μ‹€νŒ¨μ΄μœ _exception
    • ex) login_passwordMismatch_exception / save_duplicatedName_exception

TDD

  • TDD의 경우, ν¬λ§ν•˜λŠ” μΈμ›λ§Œ μ§„ν–‰ν•˜λ„λ‘ ν•œλ‹€.
  • domain
    • μœ λ‹› ν…ŒμŠ€νŠΈ μ§„ν–‰ν•œλ‹€.
  • service
    • fixture λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•œλ‹€.
    • ν…ŒμŠ€νŠΈμš© DBλ₯Ό μ‚¬μš©ν•œλ‹€.
  • controller
    • fixture λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•œλ‹€.

    • E2E둜 μ§„ν–‰ν•œλ‹€.

    • λ‹€μ΄λ‚˜λ―Ή ν…ŒμŠ€νŠΈλ₯Ό μ„ νƒμ μœΌλ‘œ λ„μž…ν•œλ‹€.

    • repository

      • 쿼리문을 λ”°λ‘œ μž‘μ„±ν•˜λŠ” κ²½μš°μ—λ§Œ ν…ŒμŠ€νŠΈμš© DB둜 μž‘μ„±ν•œλ‹€.

진행

  • 일주일 λ™μ•ˆ νŽ˜μ–΄λ₯Ό 진행해 λ³Έ ν›„, μΆ”ν›„ 지속 μ—¬λΆ€λ₯Ό κ²°μ •ν•œλ‹€.
  • λ¬Έμ„œν™”λŠ” λ…Έμ…˜κ³Ό swagger UI둜 μ§„ν–‰ν•œλ‹€.
Clone this wiki locally