[Spring] @Setter 사용하지 않기

19·2022년 7월 21일
0

Spring

목록 보기
4/29

coco 프로젝트를 하면서, 엔티티에 @Setter를 붙여서 사용을 했었다.
하지만 튜터님들이 @Setter 사용은 지양하라고 하셨고 이유는 다음과 같다.

Setter를 사용하면 목적성이 보이지 않는다. 즉 모호하다
이유는 왜 이 부분에서 Setter를 사용했는지 알기 어렵기 때문이다.
예를 들어 프로필을 변경할 때,

  • setProfileImage()은 왜 set을 사용해서 변경해주는지 의미를 알기 어렵다.
  • replaceProfileImage()은 메소드 이름에서 목적성이 보인다.

변경 전

| Member.java

// 회원이 작성한 게시글 추가
public void addPost(Post post) {
    post.setMember(this);
    posts.add(post);
}
  • 기존엔 각 엔티티마다 @Setter가 적용되어 있었고, post.setMember(this);처럼 set을 사용했다.
  • 하지만 위에서 기술했듯이, set을 사용하면 목적성이 모호하다.


변경 후

| Post.java

// 게시글 작성한 회원
public void registerMember(Member member) {
    this.member = member; 
}
  • set과 같은 역할을 하는 메소드를 구현했다.
    • 메소드 이름을 목적성이 보이도록 정했다.

| Member.java

// 회원이 작성한 게시글 추가
public void addPost(Post post) {
    post.registerMember(this);
    posts.add(post);
}
  • set을 사용했을 때보다 의도가 잘 보인다.
  • post를 작성한 member를 등록하는 메소드임을 알기 쉽다.
profile
하나씩 차근차근

0개의 댓글