관리 메뉴

기억을 위한 기록들

[refactoring] 9. 상속 다루기 (完) 본문

ReFactoring

[refactoring] 9. 상속 다루기 (完)

에드윈H 2021. 9. 12. 19:51

1. 메서드 올리기 : 한 클래스를 상속받는 여러 클래스에서 동일한 메서드가 생긴다면 부모클래스에서 올려준다.

 

2. 필드 올리기 : 1번과 마찬가지로 비슷하게 사용되는 필드가 있다면 부모에서 호출해주자

 

3. 생성자 본문 올리기 : 서브 클래스들에서 기능이 같은 생성자라면 부모 클래스로 올려주자.

 

4. 메서드 내리기 : 1번의 반대로. 부모클래스에서 선언되었다고 모든 서브클래스에서 사용되는지 확인해보자.

 

5. 필드 내리기: 2번의 반대로, 모든 서브클래스에서 사용되지 않는다면 부모클래스에 있을필요가 없다.

 

6. 타입 코드를 서브클래스로 바꾸기 : 인스턴스를 생성해주는 함수가 있을때 타입에 따라 클래스 종류를 다르게 생성하는게 낫다.

 

7. 서브 클래스 제거하기 : 서브 클래싱은 원래 데이터 구조와 다른 변종을 만들거나 종류에 따라 동작이 달라지게 할 수 있는 유용한 매커니즘이다. 한번도 활용되지 않거나, 필요로 하지 않는 방식이라면 필요가 없다.

 

8. 슈퍼클래스 추출하기 : 여러 클래스에서 동일한 기능이 자주 쓰인다면 해당 기능을 선언하는 슈퍼클래스를 만들자.

 

9. 계층 합치기 : 기능이 서로 독립적으로 있을필요가 없거나, 비슷해진다면 상위,하위 클래스로 나눌필요 없이 합치면된다.

 

10. 서브클래스를 위임으로 바꾸기 

 

11. 슈퍼클래스를 위임으로 바꾸기 

 

 

'ReFactoring' 카테고리의 다른 글

[refactoring] 8. API 리팩토링  (0) 2021.09.11
[refactoring] 7. 조건부 로직 간소화  (0) 2021.09.11
[refactoring] 6. 데이터 조직화  (0) 2021.09.11
[refactoring] 5. 기능이동  (0) 2021.09.11
[refactoring] 4. 캡슐화  (0) 2021.09.10