본문 바로가기

마틴 파울러2

마틴 파울러 리팩토링 Push down field 아래 코드를 class Employee { private String quota; } class Engineer extends Employee {...} class Salesman extends Employee {...} 아래 코드처럼 바꾼다 class Employee {...} class Engineer extends Employee {...} class Salesman extends Employee { protected String quota; } 만약 필드가 하나의 서브 클래스에서만 사용된다면 상위클래스에 두지 말고 하위 클래스로 옮긴다. 예제에서는 Employee 클래스에서 Salesman 클래스로 옮겼다. 2020. 1. 3.
마틴 파울러 - 리팩토링 - Extract Class 소스 코드에서 각 클래스의 책임과 역할은 명확해야 한다. 하나의 클래스가 여러 개의 책임과 역할을 가지고 있다면 리팩토링이 필요하다. 여러 개의 책임을 가지는 클래스를 리팩토링해본다. 순서는 이렇다. 1. 책임을 어떻게 분리할지 기준을 정한다. 2. 책임을 넘길 자식 클래스를 만든다. 부모 클래스가 할 역할이 바뀐다면 역할과 책임에 맞게 클래스 이름을 바꾼다. 3. 부모클래스와 자식클래스를 연결할 때 자식 클래스의 인스턴스를 만든다. 4. 부모 클래스에서 자식 클래스로 옮길 변수들을 옮긴다. 5. 부모 클래스에서 자식 클래스로 옮길 함수들을 옮긴다. 6. 클래스, 함수 이름을 적절하게 바꾼다. 필요없는 함수는 지운다. 7. 새로운 자식 클래스를 더 만들어서 분리할지 결정한다. 코드를 통해서 단계를 살펴본.. 2019. 10. 31.