728x90
반응형
리팩토링의 주된 작업은 코드를 포장하는 메소드를 적절히 정리하는 것이다.
핵심적인 리팩토링 기법은 코드 뭉치를 별도의 메소드로 빼내는 메소드 추출, 반대로 메소드를 호출 하는 곳에 메소드 삽입 기법이다.
메소드 추출
메소드 추출시에 가장 힘든 작업은 지역변수 처리, 주로 임시변수로 힘든경우가 많음.
1. 임시변수를 메소드 호출로 전환 후 없어도 되는 임시변수 삭제
2. 임시변수가 여러곳에서 사용된다면 임시변수 분리
3. 임시변수가 너무 얽혀 있다면 자료 객체 클래스로 전환해서 사용
void printOwing(double amound)
{
printBanner();
print("name : " + _name);
print("amount : " + amound);
}
void printOwing(double amound)
{
printBanner();
printDetail();
}
void printDetail(amount)
{
print("name : " + _name);
print("amount : " + amound);
}
코드에 대해서 목적을 알수 있는 직관적 메소드를 작성한다.
메소드의 내용이 간결해지는 것도 중요하지만 중요한 것은 길이가 아니라 메소드명과 메소드 기능이
메소드명을 통해 알수 있냐는 것.
void printOwing()
{
Enumertaion e = _orders.elements();
double outStanding = 0.0;
while(e.hasMoreElements())
{
Order each = (Order) e.netxElements();
outStanding += each.getAmount();
}
System.out.println("고객명 : " + _name);
System.out.println("외상액 : " + _outStanding);
}
void printOwing()
{
double outStanding = getOutstanding();
printDetail();
}
double getOutstanding()
{
Enumertaion e = _orders.elements();
double outStanding = 0.0;
while (e.hasMoreElements())
{
Order each = (Order) e.netxElements();
outStanding += each.getAmount();
}
retrun outStanding;
}
void printDetail()
{
System.out.println("고객명 : " + _name);
System.out.println("외상액 : " + _outStanding);
}
728x90
반응형
'IT > 리팩토링' 카테고리의 다른 글
[리팩토링] 임수변수 내용 직접 삽입 (0) | 2019.10.25 |
---|---|
[리팩토링] 메소드 삽입 (0) | 2019.10.25 |
리팩토링 - 코드 개선 방법 (0) | 2019.10.25 |
[리팩토링] 클래스 멤버변수 이동 (0) | 2019.10.25 |
[리팩토링] 객체간 메소드 이동 (0) | 2019.10.25 |