get set 메소드로 구성된 클래스에
로직이 들어가도 상관없죠?
예를들면,
set 메소드의 인자에 따라서 다른 문자열 형태로 변경하는 등의 처리 같은거요..
그리고 이런 방식으로 할 경우 주의점이나 고려사항, 또는 단점같은게 있을 수 있나요?
그리고 사용한다면
private String a; private String b;
public void setA(String a) { this.a = a; }
public String getA() { return a; }
public void setB(String b) { if ("1111".equals(getA())) { // ... } this.b = b; }
public String getB() { return b; }
처럼 내부 get메소드를 가져와서 처리하는게 이상한건 아닌지? 부탁드립니다 ㅜㅜ
3개의 의견 from SLiPP
물론 가능합니다. 상황에 따라 위와 같이 구현하는 것이 좋은 상황도 있고 그렇지 않은 경우도 있죠.
예를 들어 최초 사용자가 입력한 값을 유지할 필요가 있는 경우에는 setter/getter에는 로직을 포함하지 않는 것이 좋고요. 이 경우에 데이터 변환은 getB() 메서드 외에 다른 getter 메서드나 데이터 변환 의도를 드러내도록 메서드 이름을 지은 후에 그 메서드에서 로직을 처리하겠죠.
저는 정말 특별한 경우가 아니라면 현재 필드 값을 변환하는 로직을 setter와 getter 메서드에 추가하지는 않습니다. 대부분의 경우 데이터 변환이 필요하면 별도의 메서드를 추가하는 방식을 사용합니다.
setter 를 사용하는 경우에 로직이 들어가는 경우는 보통 최소한의 안전장치를 위한 경우로만 사용합니다. getter 같은 경우에는 getter를 사용하는 클라이언트 코드에서 한정적인 값을 받아야하는 경우에 setter와 마찬가지로 안전장치 개념으로 로직을 집어넣습니다. 그 외에 getter/setter 에 로직을 넣는 경우는 없었던듯합니다.... 궁금하네요. 다른 분들은 getter/setter를 어떻게 활용하시는지 ㅎㅎ
@자바지기 @kimmunsu 두분의 귀한 조언 정말 감사합니다!! 많은 도움이 됐습니다!!ㅎㅎ
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.