@Getter 을 지양? 이유

bong bong·2024년 7월 16일

우리는 보통 Getter를 아무 의미 없이 Spring 어노테이션이든 메서드로 만들어 사용하곤 한다.
그러나 우리는 의미 있는 개발을 위해 적재적소에 사용하는 법을 알아야 한다.

Getter을 지양하라?

객체의 상태는 외부에 노출시키면 않된다. - 객체지향의 사실과 오해

객체 지향의 사실과 오해라는 책에 내용과 같이 객체의 상태는 캡슐화가 되어 외부에 노출시키면 안된다. 또한 객체는 각자의 책임을 다해야된다.

또 객체는 다른객체와 메시지를 주고 받는다. 객체는 메시지를 받으면 그에따른 행동을 수행한다, 필요하다면 객체 스스로 내부의 상태도 변경한다.

그러나 모든 맴버변수에 Getter 을 넣다보면 책임이 다른 곳에서 수행되고 외부에서 상태변경해야될 상황이 발생할수도 있다.

또 다른이유로는 getter는 메시지 체인을 이 되어버린다.

book.gettitle().getbookname().getwriter().getprice()

메시지 체인 - 계속해서 메서드 호출이 이어지는 코드

위와같이 메시지 체인이 게속되면 가독성이 떨어진다.

마무리하며

Getter를 사용하면 OOP 의 4대원칙을 준수하기위해 접근 제어자를 숨기고 하는 일들이 무용지물이된다.
위와같은 캡슐화를 무시하는 getter 를 지양하는게 좋다.

사용하지 않을 대안

메서드 추가: 객체의 상태를 직접 노출하는 대신, 객체 내부의 상태를 변경하거나 조회할 수 있는 메서드를 하는 방법이 있다..

Immutable 객체 사용: 객체의 상태를 변경할 수 없도록 만들어 캡슐화를 보장할 수 있다..

profile
let's go invent tomorrow rather than worrying about what happened yesterday - Steven Paul Jobs

0개의 댓글