2011년 5월 26일 목요일

Extract Method

void printOwing() {
printBanner();
//print details
System.out.println ("name: " + _name);
System.out.println ("amount " + getOutstanding());
}

void printOwing() {
printBanner();
printDetails(getOutstanding());
}
void printDetails (double outstanding) {
System.out.println ("name: " + _name);
System.out.println ("amount " + outstanding);
}

그룹으로 함께 묶을 수 있는 코드 조각이 있으면, 코드의 목적이 잘 드러나도록 메소드의 이름을 지어 별도의 메소드로 뽑아낸다.

! 동기
-      지나치게 긴 메소드
-      목적을 이해하기 위해서 주석이 필요한 코드를 보면
-      작은 메소드는 실제로 이름을 잘 지었을 때만 그 진가가 드러나므로, 이름을 지을 때 주의해야한다.
! 절차
-      메소드를 새로 만들고, 의도를 잘 나타낼 수 있도록 이름을 정한다.
-      원래 메소드에서 코드를 복사하여 새 메소드로 옮긴다.
-      원래 메소드에서 사용되고 있는 지역변수가 뽑아낸 코드에 있다면 새로운 메소드의 지역변수나 파라미터가 된다.
-      뽑아낸 코드 내에서만 사용되는 임시변수가 있다면, 새로 만든 메소드의 임시변수로 선언한다.
-      뽑아낸 코드 내에서 지역변수의 값이 수정되는지 본다.
-      뽑아낸 코드에서 읽기만 하는 변수는 새 메소드의 파라미터가 된다.
-      원래 메소드에서 새 메소드를 호출하도록 한다.
! 관련 리펙토링
-      Remove Assignments to Parameter
-      Replace Temp with Query
-      Replace Method with Method Object

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...