과제 진행하시느라 정말 고생 많으셨습니다 !!
좋았던 점과 아쉬운 점에 대해서 몇 가지 피드백을 드리려고 합니다.
제일 먼저 리드미 깔끔히 작성해주셔서 좋았습니다.
기본 구현 관련해서,
요청 데이터의 유효성 검증, 에러 반환 부분도 잘 설계되었고,
트랜잭션 처리도 Readyonly 를 사용하여 읽기 전용 메서드란 부분을 명확히 남겨주신 부분 좋았습니다.
아쉬움이 남는 부분이라면,
우선 과제의 기본 구현에, ReviewCount 와 Score 에 대한 부분을 업데이트 하는 부분이 명확히 보이지 않고 있습니다.
Review 객체를 생성하는 과정에서 product 와 score 를 입력 받고,
private Review(Product product, ReviewRequestDto reviewRequestDto, String imageUrl, String originalFileName, String s3FileName, String extension) {
setProduct(product);
this.userId = reviewRequestDto.getUserId();
this.score = reviewRequestDto.getScore();
this.content = reviewRequestDto.getContent();
this.imageUrl = imageUrl;
this.originalFileName = originalFileName;
this.s3FileName = s3FileName;
this.extension = extension;
this.product.updateScoreAndCount(this.score);
}
이 부분에서 업데이트가 되는 것을 확인하긴 하였으나, 전반적인 가독성이 떨어집니다.
객체 지향적이긴 하나, Entity 까지 보기 전엔 프로덕트의 점수 업데이트에 대해 알 수 없는 부분이 아쉬웠습니다.
또한 리뷰 서비스에 달아 놓으신 주석을 보면
// 해당 Product랑 페이징한 Review가 필요...
// => Product 따로 불러오고 페이징 따로 하자.
// 1. Product 찾기
이런 부분이 있는데, 작업물을 공개할 땐, 깔끔하게 필요한 내용만 남기 시고 주석을 정리하시는걸 권장 드립니다.
리뷰 서비스의 특징에 대해 고려하고 비관적 락을 선택하신 부분도 좋았습니다.
다만, '''동시성을 고려하여 설계를 해달라'''는 요청 사항이 있었는데, 이 부분에 대해서 해석을 달리하신 것 같습니다.
기업 과제에서는, 과제에 대한 추가적인 해석을 하는 것이 필요하지만, 그것이 과제에서 제공하는 전제를 뒤엎는 해석으로 가서는
곤란 할 수 있습니다.
디렉토리 구조에서 S3 와 같은 util 부분은 따로 common 이나 util 로 빼주셔도 좋았을 것 같습니다.
또한 web 과 domain 을 나눠 놓으신 이유가 뭘까, 라는 의문이 드는 디렉토리 구조였습니다.
테스트 관련해서, 통합 테스트가 정말 잘 작성되었다고 생각합니다.
명확한 테스트의 명세, 다양한 케이스, Mock 객체 활용으로 환경 독립성을 확보하신 것 까지 깔끔했습니다.
다만, 데이터 생성과 관리 로직이 분리되었으면 더 좋았을 것 같단 생각이들었고,
중복 코드에 대한 아쉬움이 있었습니다.
이상 각 부분 별 좋았던 점과 아쉬웠던 점에서 간략하게 요약해보았고요,
기업과제 2, 프로젝트 모두 좋은 결과물 완성하시길 응원하겠습니다. -!
과제 진행하시느라 정말 고생 많으셨습니다 !!
좋았던 점과 아쉬운 점에 대해서 몇 가지 피드백을 드리려고 합니다.
제일 먼저 리드미 깔끔히 작성해주셔서 좋았습니다.
기본 구현 관련해서,
요청 데이터의 유효성 검증, 에러 반환 부분도 잘 설계되었고,
트랜잭션 처리도 Readyonly 를 사용하여 읽기 전용 메서드란 부분을 명확히 남겨주신 부분 좋았습니다.
아쉬움이 남는 부분이라면,
우선 과제의 기본 구현에, ReviewCount 와 Score 에 대한 부분을 업데이트 하는 부분이 명확히 보이지 않고 있습니다.
Review 객체를 생성하는 과정에서 product 와 score 를 입력 받고,
이 부분에서 업데이트가 되는 것을 확인하긴 하였으나, 전반적인 가독성이 떨어집니다.
객체 지향적이긴 하나, Entity 까지 보기 전엔 프로덕트의 점수 업데이트에 대해 알 수 없는 부분이 아쉬웠습니다.
또한 리뷰 서비스에 달아 놓으신 주석을 보면
이런 부분이 있는데, 작업물을 공개할 땐, 깔끔하게 필요한 내용만 남기 시고 주석을 정리하시는걸 권장 드립니다.
리뷰 서비스의 특징에 대해 고려하고 비관적 락을 선택하신 부분도 좋았습니다.
다만, '''동시성을 고려하여 설계를 해달라'''는 요청 사항이 있었는데, 이 부분에 대해서 해석을 달리하신 것 같습니다.
기업 과제에서는, 과제에 대한 추가적인 해석을 하는 것이 필요하지만, 그것이 과제에서 제공하는 전제를 뒤엎는 해석으로 가서는
곤란 할 수 있습니다.
디렉토리 구조에서 S3 와 같은 util 부분은 따로 common 이나 util 로 빼주셔도 좋았을 것 같습니다.
또한 web 과 domain 을 나눠 놓으신 이유가 뭘까, 라는 의문이 드는 디렉토리 구조였습니다.
테스트 관련해서, 통합 테스트가 정말 잘 작성되었다고 생각합니다.
명확한 테스트의 명세, 다양한 케이스, Mock 객체 활용으로 환경 독립성을 확보하신 것 까지 깔끔했습니다.
다만, 데이터 생성과 관리 로직이 분리되었으면 더 좋았을 것 같단 생각이들었고,
중복 코드에 대한 아쉬움이 있었습니다.
이상 각 부분 별 좋았던 점과 아쉬웠던 점에서 간략하게 요약해보았고요,
기업과제 2, 프로젝트 모두 좋은 결과물 완성하시길 응원하겠습니다. -!