좋 은 프로 그래 밍 - 속성 정보 가 불필요 하지 않도록 합 니 다.

데이터 구 조 를 디자인 할 때 흔히 성능 을 고려 하기 위해 불필요 한 속성 을 도입 하기 쉽다. 불필요 한 속성 이 좋 지 않다 는 것 이 아니 라 우 리 는 정상 적 인 사고방식 에 따라 데이터 구 조 를 디자인 해 야 한다.
기록 노선 의 데이터 구조의 예 를 보면 한 노선 은 출발점, 종점 과 거리 세 가지 기본 적 인 정보 가 있 고 첫 번 째 디자인 방식 은 다음 과 같다. 각각 세 개의 속성 값 으로 세 개의 값 을 기록한다.
 
import java.awt.Point;

public class Line {

		 public Point start;
		 public Point end;
		 public double distance;

}

  우 리 는 거리 가 다른 출발점 과 종점 에 의 해 제 어 된 것 임 을 알 수 있다. 그들의 변 화 는 거리 값 의 변 화 를 초래 할 수 있 기 때문에 두 번 째 디자인 에서 우 리 는 하나의 방법 으로 거 리 를 기록 하 는 정 보 를 다음 과 같이 고려한다.
 
import java.awt.Point;

public class Line {

		 public Point start;
		 public Point end;
		 
		 public double distance(){
			 return start.distance(end);
		 }

}

 이러한 디자인 과 데이터 뱅 크 의 패 러 다 임 원칙 원리 도 마찬가지 입 니 다. (예 를 들 어 개인 정보의 출생 연 도 를 통 해 연령 정 보 를 추산 할 수 있 기 때문에 한 필드 를 더 설계 하여 연령 정 보 를 저장 할 필요 가 없습니다) 그러나 실제 개발 과정 에서 저 희 는 업무 의 편리 함 이나 성능 을 고려 하여 디자인 캐 시 를 고려 하여 계산 결 과 를 기록 할 수 있 습 니 다.세 번 째 디자인 방식 은 다음 과 같다.
 
import java.awt.Point;

public class Line {

		 public Point start;
		 public Point end;
		 public boolean changed = true;
		 public double distance;
			 
		 public Point getStart() {
			 return start;
		 }
		 public void setStart(Point start) {
			 this.start = start;
			 changed = true;
		 }
		 public Point getEnd() {
		 	 return end;
		 }
		 public void setEnd(Point end) {
			 this.end = end;
			 changed = true;
		 }
		 
		  public double distance(){
			  if(changed){
				  distance = start.distance(end);
				  changed = false;
			  }
			  return distance;
		  }
}

  위의 예 와 같이 get / set 를 사용 하여 속성 정 보 를 가 져 오고 설정 하 는 것 을 권장 합 니 다. 캐 시 제 어 를 편리 하 게 추가 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기