서론
프로젝트를 진행하면서 느낀 것과 피드백 받은 것을 간단하게 정리를 해보도록 하겠다.
발표 준비
일단 다른 팀원들이 구상해놓은 것에 대해 알아야 하고
구현한 핵심로직에 대해 설명을 해야겠다.
- 카테고리
- 모달바를 구현할 때 js를 활용하고 ajax를 통한 연동 사용
- 게시글 CRUD
- postId로 기존 게시물 탐색
-
Category.postMap에서 remove를 하게 된다.
물리 삭제 방식이라고 봐도 무방 -
현재 구조상 중요한 탐색 로직
게시글과 소속 카테고리를 함께 찾고 이를
수정 ,삭제, 카테고리 변경에 사용된다. - 작성 요청이 Controller -> Service -> Repository -> Thymeleaf
로 흐름이 구성된다.
-
댓글 대댓글
댓글을 id, content, createdAt, updateAt
대댓글을 구사할 때 parentId, depth를 활용하여 tree구조를 갖게 된다. - 게시판 리스트, 페이징
다음페이지 이전페이지를 반환하는 방식으로 구현
프로젝트 리뷰, 고쳐야 할 점
MemoryRepository로 레포지토리를 하나로 관리하는 것은 solid원칙을 위배하는 것
리포지토리는 인메모리 구조로 실행해서 설계 때 하나의 리포지토리를 두어도 큰 문제가 되지 않을 것이라고 생각했다. 하지만 이렇게 프로젝트를 시작하니 이후 리포지토리에 작성해야 할 코드를 충돌이 걱정되어서 다른 곳에 작성하는 일, 등 코드에 접근하기 꺼려지는 경향이 있다.
기능을 분리하고 도메인을 분리하지 말고 반대로 도메인부터 분리하자.
지금은 service, model, repository 이렇게 3개로 분류하고 안에서 각 도메인에 관한 것을 구현했다. 하지만 Comment , Post, PostList, Category 이렇게 도메인을 먼저 분리하고 그 안에서 service, model, repository를 구현하고 시행할 필요가 있다.
Git을 너무 활용하지 않았다.
커밋메시지는 무조건 준수할 것
커밋할 때는 무조건 커밋메세지 양식을 지키도록 하고 여기에 대해 소통이 필요했던 것 같다.
→ 다른 사람이 내 커밋 메시지를 보더라도 그 의도를 알 수 있을 정도까지만 쓰는 것이 좋다.
issue를 만들고 이에 관해 글을 정리하는 것을 하지 않았다.
문제가 있으면 이에 관해 소통하는 것이 필요했던 것 같다.
project 활용이 적었다. 각 기능별로 구현하고 구현해야 할 기능에 맞게 branch를 만들어서 올리고 pull request를 수행할 때 코드리뷰를 시행했어야 했는데 이에 관한 것을 구두로만 해결하고 따로 comment에 적은 것이 없어서 안좋았다.
URL에 id를 넣어서 전송을 하고 있다.
이 경우 데이터 캡슐화가 필요하고 DTO가 필요하다.
DTO없이 넘기고 있는데 DTO를 만들어서 사용을 했어야 했다.
REST에 관한 이해도를 높이도록 하자.