Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 네이밍
- 리팩토링 기법
- 리팩토링
- 자바스크립트 모듈
- 자바스크립트
- 클로저
- 모듈
- 정규식
- Safari
- 자바스크립트 메소드
- 자바스크립트 배열
- 리팩토링이란
- 정규표현식
- 프로토타입 상속
- 자바스크립트 유효범위
- 변수명
- 자바스크립트 정규식
- 자바스크립트 객체
- 자바스크립트 클로저
- 자바스크립트 콜백
- 프로토타입
- 클린코드
- 자바스크립트 함수
- 자바스크립트 문법
- 콜백
- 자바스크립트 정규표현식
- 의미있는 이름
- 리팩토링기법
- mysql #mysql최적화 #최적화
- 자바스크립트 상속
Archives
- Today
- Total
개발정리
리팩토링 객체간의 기능 이동 기법 본문
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
7장. 객체간의 기능 이동
Move Field
필드가 자신이 정의된 클래스보다 다른 클래스에 의해 더 많이 사용된다면
- 타겟 클래스에 새로운 필드를 만들고 기존 필드를 사용하는 모든 부분을 변경하라.
언제?
- 다른 클래스에서 get, set을 통해 간접적으로 많이 사용 될 때
자체 캡술화
- 클래스 내부에서 필드를 사용할 때도 get, set메소드를 통해서 사용
- 변경이 쉬워진다.
Extract Class
두 개의 클래스가 해야 할 일을 하나의 클래스가 하는 경우
- 새로운 클래스를 만들어서 관련있는 필드와 메소드를 옮겨라.
동기
- 클래스를 성격에 맞게 추상화
- 클래스의 책임을 어떻게 나눌 것 인가?
Inline Class
클래스가 하는 일이 많지 않은 경우
- 그 클래스에 있는 모든 변수와 메소드를 다른 클래스로 옮긴다.
동기
- Extract Class에 반대다.
Hide Delegate
클라이언트가 객체의 위임 클래스를 직접 호출하고 있는 경우
- 서버에 메소드를 만들어 Delegate를 숨겨라.
동기
- 캡슐화를 위해
- 커플링을 줄일 수 있다.
Remove Middle Man
클래스가 간단한 위임을 너무 많이 하는 경우
- 클라이언트가 대리 객체를 직접 호출하라.
동기
- Hide Delegate의 반대
- Hide Delegate의 단점
- 간단한 위임메소드 추가가 필수
- 미들맨이 너무 커진다.
- 시간에 따라 두 가지 리팩토링 기법을 적절히 사용
Introduce Foreign Method
사용하고 있는 서버클래스에 부가적인 메소드가 필요하지만 클래스를 수정할 수 없는 경우
- 첫 번째 인자로 서버클래스의 인스턴스를 받는 메소드를 클라이언트에 만들어라.
Before
Date newStart = new Date(previousEnd.getYear(), previousEnd.getMonth(), previousEnd.getDate() + 1);
After
Date newStart = nextDay(previousEnd); private static nextDay(Date arg){ return new Date(arg.getYear(), arg.getMonth(), arg.getDate() + 1); }
'리팩토링' 카테고리의 다른 글
리팩토링 [북리뷰] 리팩토링이란? (0) | 2017.04.09 |
---|---|
리팩토링 메소드정리 기법 (0) | 2017.04.09 |
Comments