메시지 체인?레퍼런스를 따라 계속해서 메서드 호출이 이어지는 형태를 말한다. 코드로 보자면product.getUser().getId() 와 같은 형태이다. 흔히 '냄새나는 코드' 라는 이름으로 리팩토링 대상이 되는 구문이다. 리팩토링 방법주로 '캡슐화'를 통해 해결한다. 클래스 내부에 해당 메서드 체인을 숨겨서, 외부에서는 product 클래스만으로 해당 상품의 userId를 알 수 있도록 하는 것이다. public class Product{ private User user; //etc public Long getUserId(){ return this.user.getId(); }} 위와 같이 Product 내부에 user.getId()를 숨겨서, 외부에서는 product.getUs..