본문 바로가기
TIL/2024 원티드 프리온보딩 백엔드 인턴십

[TIL] 원티드 프리온보딩 백엔드 인턴십 Week1) 5일차, 0824

by ryuneng 2025. 1. 22.
반응형

오늘은 첫 온라인 보강이 있는 날이었다.

✔️ 오늘 한 일

  • 1차 온라인 보강 참여
  • 게시물 목록 조회 기능 개발 1차 완료
  • 게시물 목록 조회 테스트 시작
  • Swagger 연동 설정

> TMI : 기능 개발과 함께 PR 코드리뷰를 시작하니 매우매우 바쁘다. Discord 폭발 직전



👀 오늘의 이슈

- LocalDateTime vs String 타입

  • 배경
    • PostListResponse DTO의 createdAt, updatedAt 필드를
      LocalDateTime 타입과 String 타입 중에 어떤 타입으로 사용할지 고민함
  • 분석 :
    • LocalDateTime 타입
      • 장점
        1. 타입 안전성 - 날짜와 시간을 다루는 코드에서 숫자나 텍스트가 실수로 들어가는 것을 방지
        2. 편리한 조작 - 날짜와 시간 조작을 위한 다양한 메서드 제공
        3. 명확한 의미 - 해당 필드가 날짜 및 시간 타입임을 명시
      • 단점
        1. JSON 직렬화 형식 불일치 - 클라이언트와 서버 간의 날짜/시간 형식이 일치하지 않을 경우 추가 작업이 필요할 수 있음
    • String 타입
      • 장점
        1. 유연성 - 데이터의 형식이 고정되어 있지 않기 때문에 직렬화/역직렬화 작업에 있어 유연
        2. 호환성 - 클라이언트가 어떤 형식의 날짜를 사용하든, 문자열로 주고받기 때문에 형식 불일치로 인한 문제를 줄일 수 있음
      • 단점
        1. 타입 안전성 부족 - 잘못된 형식의 문자열이 들어올 가능성이 있음
        2. 파싱 필요 - LocalDateTime 등으로 파싱하는 작업이 필요하며, 코드의 복잡성을 증가시킬 수 있음
  • 결론 :
    날짜 및 시간 데이터의 정확한 의미와 안전성을 우선으로 두어 LocalDateTime 타입을 채택함
    클라이언트와 서버 간의 직렬화 문제는 단점으로 작용할 수 있었지만, @JsonFormat 등의 추가적인 설정을 통해 충분히 해결할 수 있는 문제라고 판단함
    따라서, createdAt, updatedAt 필드 타입으로 LocalDateTime을 채택하기로 결정함


💡 Today I Learned

1. Querydsl 버전 문제 해결 방법 (Feat. Q클래스)

  • Q클래스가 생성되지 않는 문제는 대부분 아래 방법으로 해결된다.
    1. gradle > build > clean & gradle > build > build
    2. Settings > Build > Build Tools > Gradle > IntelliJ로 변경해보기
    3. Settings > Build > Compiler > Annotation Processors 활성화

2. 커밋 타입은 유연하게 작성하자

  • 커밋 메시지 템플릿에 쓰여있는 설명에 얽매여서 매번 타입을 어떻게 지정해야 할지 애매한 내용이 많았는데, 코드리뷰를 통해 제안해주신 팀원분 덕분에 좀더 유연한 생각을 가질 수 있게 되었다.
#  1. Feat: 새로운 기능 추가
#  2. Fix: 오류 해결
#  3. Rename: 파일 혹은 폴더명을 수정만 한 경우
#  4. Remove: 파일을 삭제만 한 경우
#  5. Style: 기능 수정 없이 코드 스타일만 변경한 경우 (코드 포매팅, 세미콜론 누락 등)
#  6. Design: 사용자 UI 디자인 변경 (CSS 등)
#  7. Refactor: 코드 베이스의 특정 부분을 재정렬 (Refactoring)
#  8. Test: 테스트와 관련된 모든 것
#  9. Docs: 문서화에 관한 모든 것
#  10. Chore: 빌드 업무 수정, 패키지 매니저 수정 (gitignore 수정 등)
#  11. Perf: 성능 개선
  • 문제를 해결한 부분은 [Fix]로 설정하자.
  • 사용되지 않는 어노테이션을 삭제한 것은 치명적인 오류를 해결한 것은 아니기 때문에 [Refactor]가 더 적합하다.

* 문제를 해결하고, 리팩토링한 내용이 거창하지 않아도 좋다.

 


< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >

🔗 velog 버전 보기 : https://velog.io/@ryuneng2/TIL-원티드-프리온보딩-백엔드-인턴십-Week1-5일차-0824