1. 애플리케이션
자바 스프링
2. 리팩터링 이유
파일이 존재할 때와 존재하지 않을 때를 if 문으로 나눴는데 긴 로직을 if else 사이로 중복되는 코드 사용
아래는 예전 코드인데 같은 로직을 불필요하게 if로 나눠서 나열하니 길어졌다. 보기 싫어서 메소드로 뺐는데 게시판 완성하고 깔끔하게 정리해야겠다고 생각했음
public ResponseEntity<Map<String, Boolean>> postBoard(
@ModelAttribute BoardWriteRequest boardWriteRequest) {
ResponseEntity<Map<String, Boolean>> success = createBoardNoFile(boardWriteRequest);
if (success != null) {return success;}
List<String> originalFileNameList = boardWriteRequest.files().stream().map(
MultipartFile::getOriginalFilename)
.toList();
List<String> uploadFileNames = fileUtil.saveFiles(boardWriteRequest.files());
BoardSaveRequest request = BoardSaveRequest.builder()
.title(boardWriteRequest.title())
.content(boardWriteRequest.content())
.email(boardWriteRequest.email())
.uploadFileNameList(uploadFileNames)
.originalFileNameList(originalFileNameList)
.originalName(boardWriteRequest.originalName())
.saveName(boardWriteRequest.saveName())
.savePath(boardWriteRequest.savePath())
.classification(boardWriteRequest.classification())
.build();
boardService.save(request);
return ResponseEntity.ok().body(Map.of("success",true));
}
private ResponseEntity<Map<String, Boolean>> createBoardNoFile(
BoardWriteRequest boardWriteRequest) {
if (boardWriteRequest.files() == null || boardWriteRequest.files().isEmpty()) {
BoardSaveRequest request = BoardSaveRequest.builder()
.title(boardWriteRequest.title())
.content(boardWriteRequest.content())
.email(boardWriteRequest.email())
.originalName(boardWriteRequest.originalName())
.saveName(boardWriteRequest.saveName())
.savePath(boardWriteRequest.savePath())
.classification(boardWriteRequest.classification())
.build();
boardService.save(request);
return ResponseEntity.ok().body(Map.of("success", true));
}
수정 후
public ResponseEntity<Map<String, Boolean>> postBoard(
@ModelAttribute BoardWriteRequest boardWriteRequest) {
List<String> originalFileNameList = new ArrayList<>();
List<String> uploadFileNames = new ArrayList<>();
if (boardWriteRequest.files() != null) {
originalFileNameList = boardWriteRequest
.files()
.stream()
.map(MultipartFile::getOriginalFilename)
.toList();
uploadFileNames = fileUtil.saveFiles(boardWriteRequest.files());
}
BoardSaveRequest request = BoardSaveRequest.builder()
.title(boardWriteRequest.title())
.content(boardWriteRequest.content())
.email(boardWriteRequest.email())
.uploadFileNameList(uploadFileNames)
.originalFileNameList(originalFileNameList)
.originalName(boardWriteRequest.originalName())
.saveName(boardWriteRequest.saveName())
.savePath(boardWriteRequest.savePath())
.classification(boardWriteRequest.classification())
.build();
boardService.save(request);
return ResponseEntity.ok().body(Map.of("success", true));
}
단순하게 파일이 있으면 파일 저장로직 타는 간단한 문제였음
개발할땐 정신이 없어서 이상하게 만들었네.. 지금 보니 왜 저렇게 짰을까 싶다
수정 로직도 글쓰기 로직이랑 다를게 없기 때문에 똑같이 만들어서 수정 로직도 같은 방법으로 수정하겠다
'운영 > 게시판' 카테고리의 다른 글
| 게시판 성능 개선 1 (0) | 2025.01.17 |
|---|---|
| Java to Kotlin (0) | 2025.01.05 |
| 페이징 개선 (1) | 2024.12.29 |
| JPA n + 1 문제 해결 (0) | 2024.12.22 |
| 게시물 수정 페이지 오류 수정 (1) | 2024.12.18 |