2014-02-20 2 views
1

최소한의 예를 들어 설명해 드리겠습니다.클래스 변수는 다른 데이터를 사용하여 값을 계산할 수있는 권한이 있습니까?

public class Shape { 
    User user; 
    int color; 
} 

User 클래스 :

public class User { 
    int mood; 
} 

지금 도형의 색상은 사용자의 기분에 의존한다고 가정 Shape 클래스가 있다고 가정하자 .의 기분에 액세스하여 계산할 수 있기 때문에 에 color 필드가 중복되어 있습니까?

보다 현실적인 예제에서 색상을 계산하는 데 필요한 데이터에 액세스하는 것이 더 복잡하거나 더 긴 일련의 접근 자 (color = user.getCat().getCousin().getMood())를 사용할 수 있습니다. 이러한 클래스가 데이터베이스에 매핑되고 (방식으로) 중복 데이터에 매핑 될 수 있다는 점을 더 고려하십시오. 반면에 그들은 일시적으로 표시 할 수 있습니다.

색상은 분위기에 따라 다르지만 색상은 분위기와 전혀 다릅니다. 따라서 color 필드를 포함하는 것은 나에게 논리적 인 것 같지만,이 디자인을 전적으로 정당화 할 수는 없습니다.

클래스 변수는 다른 데이터를 사용하여 값을 계산할 수있는 권한이 있습니까?

답변

1

나는 색깔을 당신이 그것을 계산할 수있는 방법으로 바꾸는 것을 제안 할 것이고 나머지 프로그램은 변하지 않을 것이다.

매번 계산할 때마다 속도가 느려지고 호출 될 때마다 여분의 코드를 추가하십시오. 값을 유지하는 것이 더 빠르며 (매번 계산할 필요가 없음) 올바르게 업데이트되지 않으면 올바른 값을 가지지 않을 위험이 있습니다.

관련 문제