객체에 데이터를 직접 get
해오는 것 대신 메시지를 보내는 방법을 사용해서 객체를 객체스럽게 사용하라고 하셨다. 그거 어떻게 하는 거죠?
싶어서 관련 자료 글을 정독해보며 정리해보았다.
자바 빈 설계 규약 (자바 빈 : 자바로 작성된 소프트웨어 컴포넌트)
- 클래스의 멤버 변수의 접근 제어자는 private
- 모든 멤버 변수에 대해 get과 set이 존재해야 한다.
- get 메서드는 매개 변수가 없어야 한다.
- set 메서드는 하나 이상의 매개변수가 있어야 한다.
자바 빈즈에 대한 내용이긴 하지만 JS에도 적용시켜 볼 수 있겠지!? 하고 있었지만
이 글에서는 무조건 적으로 getter 메서드를 만드는 것이 맞냐에 물음을 던지며 시작하고 있다.
객체지향 프로그래밍은 객체
가 스스로 일을 하도록 해야 한다.
모든 멤버 변수에 getter가 있는 경우 상태 값을 바깥에서 변경시킬 수도 있고,
객체끼리 메시지를 주고 받는 형태가 아니게 되므로 이러한 경우에 객체가 객체스럽지 못하다는 것이다.
무분별한 getter 사용은 디미터 법칙(모듈은 객체 내부를 몰라야 한다는 법칙으로 객체 간의 결합을 낮추고 자율성을 높여줌)을 위반할 수도 있고 가독성이 떨어질 수 있다.
무조건 getter를 사용하지 말라는 의미가 아니다.
getter 역할만 하는 객체를 만들었던 적이 있어서 누가 내 얘기해? 했던 글이었다.
객체를 객체스럽게 사용하라니.. getter로 값을 꺼내서 하고 싶은 일 다 시켜야지~! 였는데
상태 데이터를 갖는다고 무조건 getter, setter를 만드는 습관은 버리는 것이 좋겠다.