객체스럽게 사용하기

REASON·2022년 11월 16일
0

STUDY

목록 보기
119/127

객체에 데이터를 직접 get 해오는 것 대신 메시지를 보내는 방법을 사용해서 객체를 객체스럽게 사용하라고 하셨다. 그거 어떻게 하는 거죠? 싶어서 관련 자료 글을 정독해보며 정리해보았다.

자바 빈 설계 규약 (자바 빈 : 자바로 작성된 소프트웨어 컴포넌트)

  • 클래스의 멤버 변수의 접근 제어자는 private
  • 모든 멤버 변수에 대해 get과 set이 존재해야 한다.
  • get 메서드는 매개 변수가 없어야 한다.
  • set 메서드는 하나 이상의 매개변수가 있어야 한다.

자바 빈즈에 대한 내용이긴 하지만 JS에도 적용시켜 볼 수 있겠지!? 하고 있었지만
이 글에서는 무조건 적으로 getter 메서드를 만드는 것이 맞냐에 물음을 던지며 시작하고 있다.

getter 대신 메시지를 보내라

객체지향 프로그래밍은 객체가 스스로 일을 하도록 해야 한다.
모든 멤버 변수에 getter가 있는 경우 상태 값을 바깥에서 변경시킬 수도 있고,
객체끼리 메시지를 주고 받는 형태가 아니게 되므로 이러한 경우에 객체가 객체스럽지 못하다는 것이다.

무분별한 getter 사용은 디미터 법칙(모듈은 객체 내부를 몰라야 한다는 법칙으로 객체 간의 결합을 낮추고 자율성을 높여줌)을 위반할 수도 있고 가독성이 떨어질 수 있다.

  • 상태를 가지는 객체가 있다면 객체가 역할을 수행할 수 있도록 해라.
  • 객체가 로직을 구현해야 한다.
  • 상태 데이터를 꺼내 로직을 처리하지 않고 객체에 메시지를 보내서 일을 하도록 해라.

무조건 getter를 사용하지 말라는 의미가 아니다.

getter 역할만 하는 객체를 만들었던 적이 있어서 누가 내 얘기해? 했던 글이었다.
객체를 객체스럽게 사용하라니.. getter로 값을 꺼내서 하고 싶은 일 다 시켜야지~! 였는데
상태 데이터를 갖는다고 무조건 getter, setter를 만드는 습관은 버리는 것이 좋겠다.


참고 자료
getter를 사용하는 대신 객체에 메시지를 보내자

0개의 댓글