DDD-Community / undertheriver-sgsg-backend

✒ 사각사각 백엔드
9 stars 0 forks source link

feat: 비밀 폴더에 속한 메모의 컨텐츠는 숨긴다. #125

Closed plzprayme closed 3 years ago

plzprayme commented 3 years ago

105

변경 사항

기타

plzprayme commented 3 years ago

객체에 메세지를 보내는 방식으로 작업을 해봤습니다.

두 가지 방식이 떠올라서 둘 다 작업을 해봤는데요. 홍빈님은 의견이 어떤지 여쭤보고 싶습니다~

  1. Dto 에서 dto builder를 호출하기

    public static class ReadMemoRes { // Dto 에서
    public static ReadMemoRes toDto(Memo memo) {
        return ReadMemoRes.builder()
            .memoId(memo.getId())
            .memoContent(memo.fetchContent())
            .createdAt(memo.getCreatedAt())
            .thumbnailUrl(memo.getThumbnailUrl())
            .folderId(memo.getFolderId())
            .folderTitle(memo.getFolderTitle())
            .folderColor(memo.getFolderColor())
            .favorite(memo.getFavorite())
            .secret(memo.isSecret())
            .build();
    }
    }

    ReadMemoRes.toDto() 에서 Memo가 가지고 있는 정보들을 불러옵니다.

  2. Entity 에서 dto builder를 호출하기

    public class Memo { // Entity 에서
    public MemoDto.ReadMemoRes toReadMemoRes() {
        return MemoDto.ReadMemoRes.builder()
            .memoId(id)
            .memoContent(fetchContent())
            .createdAt(getCreatedAt())
            .thumbnailUrl(thumbnailUrl)
            .favorite(favorite)
            .folderId(folder.getId())
            .folderTitle(folder.getTitle())
            .folderColor(folder.getColor())
            .secret(folder.isSecret())
            .build();
    }
    }

1번 방식은 Entity에 public 메서드들이 많이 생기는 반면에 (memo.getFolderId(), memo.getFolderTitle() ....) 2번 방식은 public 메서드 하나에 priavte 메서드 하나만 생깁니다.

음.. 2번 방식은 Memo에서 ReadMemoRes를 생성하고 있으니 좋지 않은 방식일까요?

hongbin-dev commented 3 years ago

저도 비슷한적이 있었는데요. 전엔 1번을 기준으로 했었습니다. '변경이 많이일어나는곳(DTO)에서 적게일어나는 곳(모델)으로 의존하자' 라는 생각으로 했었습니다. 더 책임을 나누는분들은 assembler라는 클래스를 둬서 변환하는 클래스를 따로 두더라고요

plzprayme commented 3 years ago

위에 말씀하신대로 1번으로 변경했습니다~

assembler 는 공부를 해봐야겠네요.

isSecret() 메서드는 왜 저렇게 작성을 했었을까요.. 부끄럽습니다 ㅋㅋ