-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[oop] 리팩토링 #95
Comments
켄트 벡의 '모자 두개' 비유법
|
리팩토링이 어떨 때 필요한가?
|
위드 커닝햄 曰, "리팩토링은 대출금이다."
|
리팩토링 설계
|
단위 테스트와 기능 테스트
※ 너무 많은 테스트를 작성하는 것은 질릴 수 있다. 너무 간단한 코드는 대상에서 제외시킨다. |
===================== 방법 ======================= |
메소드 정리메소드 추출
메소드 내용 직접 삽입
임시변수 내용 직접 삽입임시변수를 메소드 호출로 전환
직관적인 임시변수 사용
임시변수 분리
매개변수로의 값 대입 제거void aMethod(Object foo) {
foo.modifyInSomeWay(); // 괜찮다.
foo = anotherObject; // 고통과 절망을 안겨줄 것이다. (?)
} 메소드를 메소드 객체로 전환
알고리즘 전환
|
객체 간의 기능 이동메소드 이동
필드 이동
국소적 상속확장 클래스 사용
배열을 객체로 변환
마법 숫자를 기호 상수로 전환
컬랙션 캡슐화
레코드를 데이터 클래스로 전환분류 부호를 하위클래스로 전환
abstract class Employee {
// ...
public static create(int type) {
switch(type) {
// ...
}
}
// ...
} |
조건문 간결화여러 겁의 조건문을 감시 절로 전환
조건문을 재정의로 전환
|
메소드 호출 간결화 |
p325 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
다시 읽어보는 마틴 파울러의 '리팩토링'
The text was updated successfully, but these errors were encountered: