2011년 5월 26일 목요일

Consolidate Duplicate Conditional Fragments

if (isSpecialDeal()) {
total = price * 0.95;
send();
}
else {
total = price * 0.98;
send();
}

if (isSpecialDeal())
total = price * 0.95;
else
total = price * 0.98;
send();



동일한 코드 조각이 조건문의 모든 분기 안에 있는 경우 동일한 코드를 조건문 밖으로 옮겨라

! 동기
-      때때로 조건문의 모든 구간에서 실행되는 동일한 코드를 보게 된다.
-      이런 경우 이 코드를 조건문 밖으로 옮겨야 한다.
! 절차
-      조건에 상관없이 동일하게 실행되는 코드를 확인한다.
-      공통으로 사용되는 코드가 시작 부분에 있다면, 그 코드를 조건문 앞으로 옮긴다.
-      공통으로 사용되는 코드가 끝 부분에 있다면, 그 코드를 조거문 뒤로 옮긴다.
-      공통으로 사용되는 코드가 중간 부분에 있다면, 그 코드의 앞또는 뒤에 있는 코드와 위치를 바꿀 수 있는지를 살펴본다.
-      만약 한 문장보다 많다면 그 코드를 메소드로 추출하라.
@ Remove Control Flag
일련의 boolean 식에서 컨트롤 플래그 역할을 하는 변수가 있는 겨우 break 또는 return 을 대신 사용하라.
! 절차
-      논리문 밖으로 나오도록 하는 컨트롤 플래그 값을 찾는다.
-      논리문 밖으로 나오도록, 컨트롤 플래그에 값을 설정하던 부분을 찾아 break 나 continue 문으로 바꾼다.
다른 방법
-      로직을 메소드로 뽑아낸다.
-      논리문 밖으로 나오도록 하는 컨트롤 플래그의 값을 찾는다.
-      논리문 밖으로 나오도록 컨트롤 플래그에 값을 설정하는 부분을 return 으로 바꾼다.

댓글 없음:

댓글 쓰기

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

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