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

[Feature] 게시글 생성 API #39

Merged
merged 2 commits into from
Apr 28, 2023
Merged

[Feature] 게시글 생성 API #39

merged 2 commits into from
Apr 28, 2023

Conversation

YooJisu826
Copy link

@YooJisu826 YooJisu826 commented Apr 7, 2023

체크리스트(PR 올리기 전 아래 내용을 확인해주세요)

  • merge할 브랜치의 위치를 확인했나요?
  • 리뷰가 필요할 경우 리뷰어를 적용했나요?
  • pr 제목을 규칙에 맞게 작성했나요?
  • 이슈 번호를 기록했나요?
  • 라벨을 지정했나요?

이슈 번호

close #38

구현 기능

  • Post 생성
  • Post에 PostPhoto 첨부 시 S3에 등록 및 삭제 기능

논의 하고 싶은 내용

  • 저는 평소에 Entity 만들 때 Builder 패턴을 자주 사용하는 편인데, 다른 분들 코드를 보니 Entity class 밑에 생성자와 각종 메서드를 만들어서 생성자를 통해 Entity를 생성하시더라고요! 그래서 두 가지 방식의 차이가 궁금해져 알아보았습니다. 여러분들은 Builder를 사용하지 않고 생성자로 만드는 특별한 이유가 있으신가요?
  • Builder 패턴은 생성자 방식의 단점을 보완하기 위해 만들어졌다고 합니다. 파라미터로 넘겨주는 인자값이 많아지고 자료형이 다양해질 경우 생성자 보다는 Builder를 추천한다고 합니다. 넘겨줄 인자가 많을 때 생성자로 만들면 순서를 꼭 지켜주어야 하기 때문에 혼란이 올 수 있는 반면, Builder 패턴을 이용하면 네임드 파라미터를 사용할 수 있고 안전하다고 합니다.
  • 오늘의 짐 레포지토리를 옮기기 전에는 게시글 생성 API를 Builder 패턴으로 구현했었습니다. 이번에는 생성자를 사용하여 구현해보았습니다. 빌더를 사용한 코드가 가독성이 더 좋은 것 같은데, 생성자를 이용해 구현하니 코드가 훨씬 깔끔하다는 느낌을 받았습니다!
  • 그런데 이런 의문이 들었습니다. Builder가 생성자의 단점을 보완한다면, Builder만 쓰면 되지 않을까요? 왜 섞어 쓰는 걸까요..? 여러분의 생각이 궁금합니다!

공유하고 싶은 내용

  • PostPhoto 관련해서 헤론의 방식과 비슷하게 하려고 로직을 많이 참고했습니다 하하 감사합니다 헤론 최고에요!

@YooJisu826 YooJisu826 added the 👩‍💻feature 기능개발 label Apr 7, 2023
@YooJisu826 YooJisu826 self-assigned this Apr 7, 2023
Copy link
Contributor

@EUNJEONGMUN EUNJEONGMUN left a comment

Choose a reason for hiding this comment

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

제가 Builder를 사용하지 않고 생성자로 만드는 이유는 메서드에 이름을 붙일 수 있기 때문입니다. 목적에 맞는 객체를 생성할 수 있기 때문에 생성자로 만드는 방법을 더 선호합니다!
예를 들어 제가 짠 코드 중에서 Report를 만드는 메서드는 세 개가 있습니다.
각각 유저 신고createReportMember, 게시글 신고createReportPost, 댓글 신고createReportComment입니다.

각 목적에 맞는 객체를 생성하고 싶어 위와 같이 구현했습니다.

하지만 보라가 말씀하신 것처럼 파라미터로 넘겨주는 인자 값이 많아질수록 생성자로 객체를 생성할 때 혼란이 올 수 있을 것 같습니다!

두 방법을 비교한 후 적절한 상황에 맞게 사용하는 것도 좋을 것 같아요:)

@YooJisu826 YooJisu826 merged commit 6a493f8 into develop Apr 28, 2023
@YooJisu826 YooJisu826 deleted the feature/createPost branch April 28, 2023 08:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants