운영/게시판

서버 게시판 저장 및 수정 로직 수정

tokkaiiii 2024. 12. 18. 13:52

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));
  }

 

단순하게 파일이 있으면 파일 저장로직 타는 간단한 문제였음

개발할땐 정신이 없어서 이상하게 만들었네.. 지금 보니 왜 저렇게 짰을까 싶다

수정 로직도 글쓰기 로직이랑 다를게 없기 때문에 똑같이 만들어서 수정 로직도 같은 방법으로 수정하겠다