Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

전남대_11조_골라주마_9주차 #162

Merged
merged 100 commits into from
Nov 6, 2023
Merged

전남대_11조_골라주마_9주차 #162

merged 100 commits into from
Nov 6, 2023

Conversation

jinwooseok
Copy link
Contributor

@jinwooseok jinwooseok commented Nov 5, 2023

어떤 내용에 대한 PR인가요?

전남대_11조_골라주마_9주차 개발 진행하였습니다! 이번 주차는 오류 해결과 테스트코드를 추가하고 리팩토링을 위주로 진행했습니다. 작업 내역은 다음과 같습니다

작업 내역

구현

  • test 코드 추가
  • mypage 구현
  • 이미지 처리 기능 구현

리팩토링

  • test 코드 수정
  • 핫게시판 수정
  • 각종 오류 해결

9주차 작업 완료 PR

[FIX] test 코드 bug 모두 수정 #159
[Test] 투표 마감 서비스 테스트 코드 추가 #157
[FEAT] 닉네임, 이메일 업데이트 구현 #156
[chore ] long, int 타입 변경 #155
[FIX] option count 에러 문제 해결 #153
[Fix] 완료된 투표 조회 오류 해결 #151
[FIX] mypage url 수정 #150
[FIX] 이미지 데이터 default >> null 변경 #149
[REFACTOR] comment test 추가 + 작은 리팩토링 #145
[Refactor] 이미지 조회시 인코딩된 이미지 형식 추가 #143
[Refactor] fe 요청에 따른 이미지 조회 주소값 응답 #142
[Refactor] 이미지 조회 확장자명 설정 #141
[Refactor] 이미지 업로드 경로 변경 및 인코딩 코드 추가 #140
[FIX] 투표 취소 시 에러 null 오류 해결 #139
[Refactor] 이미지 처리 수정 #136
[Feat] 이미지 처리 기능 구현 #134
[REFACTOR] hot게시판 수정 및 테스트 추가 #133
[REFACTOR] mypage 추가 + api, service테스트 #132
[Refactor] 참여한 투표 리스트 조회 쿼리 추가 #131
[Refactor] 투표 리스트 조회 컨트롤러 enum 타입 변환 추가 #129
[FIX] local환경에서 데이터베이스가 설정돼있지 않던 문제 해결, dev환경변수 문제 해결 #127

무엇을 위주로 보면 좋을까요?

추가중

jinwooseok and others added 30 commits October 23, 2023 17:08
@kssumin
Copy link
Contributor

kssumin commented Nov 6, 2023

아래 PR 도 추가하겠습니다..!
FEAT decision 업데이트 구현#163

Copy link

@lalwr lalwr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드에 대해 고민을 많이 한 부분이 느껴지네요!
테스트코드도 꼼꼼하게 잘 구현하셨습니다! 👍

코멘트 관련하여 궁금한 점이 있으면 말씀해주세요!

.orElseThrow(() -> new NullPointerException("유저 정보가 존재하지 않습니다."));
}

protected int countCreatedVote(Long userId) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

접근제한자가 protected 인 이유가 있을까요?

return voteRepository.findAllParticipateListByUserId(userId).size();
}

protected UserProfileResponse userProfileConverter(
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UserProfileResponse 에서 생성자나 메소드를 통해 처리하는것은 어떨까요?
코드의 재사용성도 좋아질꺼 같습니다.

return new CreateCommentResponse(commentEntity, true, username);
}

private String getUsername(Long userId) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

반복되는 로직은 따로 추출하여 Service로 추출해도 좋을꺼 같습니다.

UpdateCommentRequest requestDto, Long commentId, Long userId) {

// 1. 존재하는 댓글인지 확인
CommentEntity commentEntity =
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1,2 번 로직이 여러곳에서 똑같이 사용되는데 서비스로 추출하는 방법등을 활용하여 중복을 줄여 보면 좋을꺼 같습니다.

// entity list >> dto list
List<VoteDto> voteDtoList = voteDtoConverter(voteEntitySlice, userId);
// 마지막 페이지인지 검사
boolean isLast = true;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 부분은 로직 처리가 없는데 무조건 true 인 것일까요?

@@ -56,23 +56,23 @@ public GetVoteListResponse.MainAndFinishPage getVoteList(
return new GetVoteListResponse.MainAndFinishPage(votes, isLast);
}

private Slice<VoteEntity> getVoteListByRequest(String active, String category, String sort) {
private Slice<VoteEntity> getVoteListByRequest(Active active, Category category, Sort sort) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ENUM 처리 👍

return OptionEntity.builder()
.voteId(voteId)
.optionName(request.getName())
.optionImage(request.getImage())
.optionImage(null)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

필수로 null이어야 하는 이유가 없다면 값이 없는 경우는 셋팅을 아예 하지 않는 것도 방법입니다.

public class ImageUploader {

private static final String SYSTEM_PATH = System.getProperty("user.dir");
private static final String UPLOAD_PATH = "/src/main/java/com/kakao/golajuma/vote/infra/images/";
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yml에 설정후 @value 를 사용해서 작업해도 좋을꺼 같습니다.
고정적인 값 또는 환경마다 path가 다를수 있는 경우 설정에 값을 선언후 불러와서 사용하기도 합니다.

byte[] decodedBytes = decoder.decode(base64.getBytes());
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(decodedBytes);
fileOutputStream.close();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

close()는 무조건 실행해야 하기 때문에 finally 안에 선언하는 것이 좋습니다.
Try-with-resources 를 사용하는것도 방법입니다.

getVoteListService.getVoteList(
userId,
page,
getVoteListRequestConverter.toSort(sort),
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1개씩 convert 를 해주기보다는
RequestParam에 ENUM을 선언하여 활용하는 것이 좋습니다.

@lalwr lalwr merged commit 8e0cdbe into review Nov 6, 2023
@jinwooseok jinwooseok added the Request Review 멘토님께 PR리뷰 요청 label Nov 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Request Review 멘토님께 PR리뷰 요청
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants