get set 도배하는 게 객체지향의 본질은 아닌것 같음.
getter를 쓸거면 확실히 변수 자체가 아닌 변수의 copy만 받고 싶을 때,
setter를 쓸거면 올바르지 않은 입력(예를 들어 1이상 100이하의 값인데 300은 준다거나)
에 대해 변경을 거부하거나, 올바른 값으로 변조하여 변경할 때 아니면 걍 퍼블릭 쓰는 게 맞아보임.
그 외엔 뭐
겟, 셋 둘중 하나만 가능하게 하고 싶다거나,
get set을 하면서 동시에 여러 변수를 건든다거나 다른 함수를 호출할 때
set하면서 설정의 성공, 실패 여부를 return할 때 등
쨌든 단순히
void setval(int a){val =a;}
int getval(){return val;}
이럴 꺼면 걍 퍼블릭 쓰고말지..,
제대로 이해한거가
- dc official App
set도배는 누가 하라고 가르치던 모든 객체는 은닉성을 띄고 있어야한단다 그럴꺼면 걍 메인에서 다 개발하련
어쨌든 겟, 셋을 많이 쓰긴 해야하는 데, 단순히 아무 내용없는 게터 세터는 쓰나 마나 라는 것? - dc App
맞는거임. 많은 책에도 그리 나와있는데 자바의 경우 오랫동안 이런방식을 쓰면서 클래스를 사용하는 라이브러리들이 여기에 맞춰서 개발되어버려서 어쩔수 없이 사용하는 경우가 더 큰거 같음. 가장 쉽게는 getter를 이용해서 객체를 직렬화하는 json라이브러리들이 대표적이지. 객체내에 필드를 getter로 직접 오픈하고 생성자가 아닌 setter릉 통해 필드를 설정한다는게 이미 그 객체가 객체가 아닌 자료구조의 역할만 한다는 반증이라 public이어도 별 차이는 없지. 클린코드 책에서도 이와 같은 이야기가 나오고.
감 좋네
pojo도 개씹적폐