는 내가이 개 코드 조각을 통해 내 질문에 설명하려고 것 같아요클래스 메서드 구현 : 클래스의 멤버 변수를 변경하거나 인수를 받아야합니까?
// snippet 1
class FooBar
{
private int value;
public int DetermineSomeResult()
{
PerformSomeCalculationOnValue();
PerformSomeMoreStuffOnValue();
return value;
}
public int GetCachedValue()
{
return value;
}
}
첫 번째 구현은 기본적으로 개인 정수 멤버에 작동 방법이있다. 모든 계산을 완료 할 때까지
여기 번째 구현의 제 구현
// snippet 2
class FooBar2
{
private int value;
public int DetermineSomeResult()
{
int tempvalue =GetCachedValue();
tempvalue = PerformSomeCalculationOnValue(tempvalue);
tempvalue = PeformMoreStuffOnValue(tempvalue);
SetValue(tempvalue);
return tempvalue;
}
public int GetCachedValue()
{
return value;
}
}
있어, 변화는 내부 상태에 이루어지지 않는다. 하나가 더 나은 디자인 현명한?
내가 더 명확하게 두 번째 것을 선호하는 경향이 있습니다. 종속성을 보여줍니다. 그러나 클래스 자체가 이미 계산 된 값을 대상으로하는 클래스 멤버를 저장하기 때문에이를 사용하지 않는 것처럼 보입니다.
이 문제에 대한 의견이 있으십니까?
우려가 스레드 안전합니까? –
아직 없습니다. 내 프로젝트는 현재 스레드에 관련되지 않습니다. – Extrakun