본문 바로가기
JavaScript│Node js

마틴 파울러 - 리팩토링 - Remove Middle Man

by 자유코딩 2019. 11. 6.

프로그램에서는 getter 함수를 사용해서 데이터에 접근하기도 한다.

불필요한 getter 함수를 없애고 코드를 간결하게 만든다.

여기서 불필요한 getter 함수가 바로 Middle Man이다.

코드를 통해서 단계를 살펴본다.

manager = aPerson.manager;

class Person {
	get manager() { return this.department.manager; }

Person 클래스 안에는 manager 함수가 있다.

manager 함수는 department의 manager를 리턴한다.

manager = aPerson.department.manager;

클래스의 getter를 사용하지 않고 person.department.manager로 가져온다.

 

리팩토링 기법인 High Delegate에서는 encapsulate하는 것에 대해서 이야기 한다.

데이터에 바로 접근 할 수 없도록 한다.

그리고 매번 접근하려면 getter 역할을 해줄 함수를 만들어야 한다.

이건 좀 귀찮은 일이 될 수도 있다.

 

얼마나 변수를 숨기는게 적절한지는 판단하기 어려울 수 있다.

시간이 지날 수록 시스템은 변하고 캡슐화의 정도도 달라진다.

그러면 High Delegate를 사용할수도 있고, Remove Middle Man을 사용할수도 있다.

개발하는 시스템의 변화에 따라 맞춰서 사용하면 된다.

 

client code

manager = aPerson.manager;

 

class Person

get manager() { return this._department.manager; }

 

class Department

get manager() { return this._manager; }

 

-- javascript 의 get 키워드

class AAA{ // 캡슐화

// 변수

get hello(){return '변수';}

// 함수에 get 키워드를 쓰면 return 값을 바로 사용한다.

}

new AAA().hello // return 값 접근



 

 

 

댓글