리팩터링 | 마틴 파울러 | 한빛미디어- 교보ebook

코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기, 20여 년 만에 다시 돌아온 마틴 파울러의 리팩터링 2판 리팩터링 1판은 1999년 출간되었으며, 한국어판은 2002년 한국에 소개되었다

ebook-product.kyobobook.co.kr

 

개요

클라이언트가 서버의 위임 객체의 다른 기능을 사용하고 싶을 마다 위임 메서드를 추가해야한다. 과도하면 단순히 위임 메서드만 들어나 성가셔진다.

 

서버는 단순히 중개자 역할로 전락할 있어 이럴 바엔 그냥 클라이언트가 위임 객체를 직접 호출하는 나을 있다.

데메테르 법칙을 너무 지나치게 지킬 이런 상황이 발생한다.

 

최소 지식 원칙 == 데메테르 법칙

내부 정보를 가능한 숨기고 밀접한 모듈과만 상호작용하여 결합도를 낮추자는 원칙

과정에서 래퍼 클래스나 위임 객체가 너무 늘어나는 부작용이 있다.

 

균형을 잡는 것이 중요하다.

균형점을 잡는 것은 너무 고민하지 않아도 된다. 리팩터링으로 다시 변경하기 쉽기 때문이다.

 

예시

Department 객체를 통해 manager 찾는다.

 



//클라이언트
let manager = aPerson.manager;
class Person{
    get manager(){return this._department.manager;}
}
class Department{
    get manager(){return this._manager;}
}


//클라이언트
let manager = aPerson.department.manager;
class Person{
    //게터 추가 후 클라이언트 코드 수정 후 위임(중개) 메서드 제거
    get department(){return this._department;}
}
class Department{
    get manager(){return this._manager;}
}

 

중개 메서드는 균형이 중요하다. 반드시 하나를 정해서 적용하거나 적용하지 않거나 필요가 없다.

자신이 처한 상황에 따라 절적히 섞어쓰는 지혜가 필요하다.

 

 

 

+ Recent posts