아무거나

Setter 사용을 지양하자. 본문

Java/Java

Setter 사용을 지양하자.

전봉근 2022. 11. 26. 20:26
반응형
  • Setter 사용을 지양하자.
    • 값을 변경한 의도를 파악하기 힘듬
      // 어떤 의도로 데이터를 변경하는지 명확히 알 수 없다.
      public Member updateMember(long id) {
          final Member member = findById(id);
          member.setFistName("value");
          member.setLastName("value");
          member.setAge("value");
          return member;
      }
      
    • 객체의 일관성을 유지하기 어려움
      • public 으로 언제든 변경할 수 있는 상태가 되므로 모든 곳에서 변경이 할 수 있는 상태가 되므로 객체의 일관성을 유지하기 어렵다.
    • Setter 대신 다른 것을 사용 필요
      • 생성자를 오버로딩 (멤버변수가 많고 다양한 생성자를 가져야 한다면 코드가 길어지고 가독성이 떨어지므로 Builder 패턴을 사용하자.)
      • Builder 패턴 사용
        public class Member {
            private String name;
            private String age;
            
            @Builder
            public Member(String name, int age){
              this.name = name;
                this.age = age;
            }
        }
        
        // 빌더패턴은 요구사항에 맞게 필요한 데이터만 이용하여 순서가 상관없이 유연한 클래스 생성이 가능하며 전체 생성자 하나만 갖고 있기 때문에 유지보수 및 가독성에 좋다.
        Member.builder().name("value").age("value").build();
        
      • 정적 팩토리 메소드
        // 정적 팩토리 메서드를 사용한다면 이름을 가질 수 있기 때문에 반환될 데이터를 추측할 수 있다.
        public class Member {
            private String name;
            private String age;
            
            public static void createMember(String name, int age){
              this.name = name;
                this.age = age;
            }
            public static void createMemberName(String name){
              this.name = name;
            }
        }
        

 

참고: https://velog.io/@hope1213/

반응형
Comments