Skip to content

2022/ 09/ 19 초기 템플릿 안내 및 개발 일정 #1

@yangddoddi

Description

@yangddoddi

실제 코드 구현 과정에서 논의 사항과 달라진 부분들이 있습니다


  1. Member -> User로 변경되었습니다.
    SpringSecurity에서 기본적으로 제공하는 메서드에 모두 user 키워드가 들어가기 때문에 일관성을 위해 변경했습니다.
  2. 북마크, 좋아요, 차단의 경우 Delete 요청 없이 Post로 좋아요와 취소를 변경하도로 변경되었습니다.
    프론트/ 백엔드 모두 불필요하게 코드가 증가한다고 생각되어 배제하였습니다. 다른 의견 있으시면 남겨주세요.
  3. 기본 댓글은 좋아요를 받지만 답글(re-comment)는 좋아요를 누를 수 없는 것으로 변경했습니다.
    또한, 프로필 사진도 댓글에만 표시됩니다.
  4. 기존에 협의되지 않았던 기술 스택인 QueryDsl의 의존성을 추가해놨습니다.
    복잡한 페이징 처리 시에 도움이 많이 되기 때문에 넣어놓기는 했는데, 반드시 필요한 순간이 오기 전까지는 사용하지 않을 예정입니다.


초기 템플릿 안내 사항

  1. 인자로 받아야하는 요소들에 대한 정확한 값을 아직 확정하지 못했기 때문에 개발 단계에서 끊임 없이 저랑 소통하며 정해나가야 할 것 같습니다.
    혼자 작업하다보니 전체 프로세스까지 신경쓰며 프론트를 구현하기가 어렵습니다 ㅜㅜ 양해 부탁드립니다.
    특히 반환 형태는 반드시 저와 상의 후 결정하셔야 합니다.
  2. 마찬가지로 컨트롤러는 반환값이나 입력값 DTO를 겉으로라도 구현해놨으나,
    서비스까지 제가 모두 정의하면 오늘 안에 끝낼 수 없을 것 같아 서비스는 메서드명만 정해두고 인자와 반환값은 모두 디폴트로 두었습니다.
    개발 시 불필요한 수정을 줄일 수 있도록 보편적으로 사용되는 항목은 사전에 협의하며 작성하면 좋을 것 같습니다.
  3. 스프링 시큐리티 때문에 Controller 테스트는 모든 메서드에 각각 @WithMockUser를 작성해야 정상적으로 테스트 가능합니다.
  4. 기본적인 앱 실행 테스트는 완료했으나 시간이 촉박하여 충분히 검수하지 못했습니다.. 문제 있는 항목 발견하면 먼저 알려주시고, 이후 수정 부탁드립니다.
  5. 컨트롤러, 서비스의 클래스 작명은 모두 Interface 이름 + Impl로 통일합니다.
  6. 추가적으로 메서드가 필요한 경우에도 인터페이스를 먼저 작성하고 구현체에서 상속받아 구현해주세요.


커밋 시에는 아래 양식을 지켜주세요

* Feat : 새로운 기능 추가
* Fix : 버그 수정
* Docs : 문서 수정
* Style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
* Refactor : 코드 리펙토링
* Test : 테스트 코드, 리펙토링 테스트 코드 추가
* Chore : 빌드 업무 수정, 패키지 매니저 수정

ex>

git commit -m "Feat : UserPost 메서드 작성. (제목)
  
UserPost 메서드 구현 및 관련 Dto인 UserPost.Post 작성" (본문)

간단한 예시일 뿐 가급적 제목만으로 모든 걸 알 수 있는 게 Best practice입니다.



2022/ 09/ 19~ 개발 일정

로직 명칭을 정하기가 애매해 모두 API 기준으로 작성하였습니다.
해당 방식이 불편하면 의견 공유 부탁드립니다!

한 개 작업을 완료 시마다 풀 리퀘스트 및 완료 체크 부탁드립니다.
전달사항 reminding 및 (반 강제적인) 지속적인 레포 확인을 위함입니다.
이 부분도 다른 의견 있으시면 공유 부탁드려요!

디스코드 회원 목록 순서대로 작성

강지원

  • POST /posts
  • GET /posts
  • PATCH /posts/{post-id}

양은찬

  • 스프링 시큐리티 토큰 프론트와 연동
  • 프론트 주요 api 연동 마무리

김경근

  • POST /{post-id}/bookmark
  • POST /{post-id}/report
  • POST /{post-id}/like
    추가 과제
  • GET /posts?category={category}&page={page}&size={size}

조규원

  • GET /profile/{user-id}
  • DELETE /{user-id}
  • POST /block/{user-id}

작업 단위는 최대한 서로 의존성을 갖지 않도록 분배하였습니다. 추후 내가 꼭 맡고 싶은 역할이 있다거나, 기존 분배 방식이 마음에 들지 않으면 말씀해주세요.

1. 커밋 시 클래스, 메서드 경계를 넘지 않게 최소 단위로 수정한다.
아무리 사소한 것이더라도 해당 메서드나 클래스 경계에 수정할 것이 그 부분 밖에 없다면 그것만 커밋할 것.  
(단, 특정 메서드에 밀접한 관계가 있는 DTO작성 시 같이 커밋할 수 있습니다.)
2. 1개 로직 완성 시마다 PullReqeust
3. 테스트는 반드시 단위테스트로 다른 레이어에 영향을 받지 않아야하며, 한 개 메서드당 실패 테스트도 최소 한 개 이상 포함한다.
4. 컨트롤러 테스트 시 RestDocs도 생성할 것 (HTML 제외)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions