2009-11-08 1 views
0

클래스에 불변량을 설정하기 위해 개인 정적 변수를 사용하는 것이 합리적입니까?불변 식을 설정하는 개인 정적 변수

예 :

class MovingObject 
{ 
public: 
    //...Stuff 
private: 
    // Invariants 
    static const double VELOCITY; // Moving objects always move at this velocity 
    // etc. for any other invariants 
    //... 
} 
--------------------------------------------------------------------------------- 
#include "MovingObject.h" 
// Invariants 
const double MovingObject::VELOCITY = 256.5; 
//etc. 
+1

주제와 관련하여 흥미로운 기사입니다. http://www.stanford.edu/~pgbovine/programming-with-rep-invariants.htm – Anonymous

+0

빠른 제안 - 귀하의 상수 이름을 모두 대문자로 만들지 마십시오. 규약에 따라 C 및 C++에서 모든 대문자 기호는 전 처리기 매크로에 사용되는 경향이 있습니다. 거의 모든 C/C++ 개발자는 대문자 C++ 심볼을 맹 글링하는 전처리기로 인한 컴파일 문제를 추적하기 위해 수많은 시간을 보냈습니다. –

답변

1

확실히. 이것은 Java를 포함한 여러 OO 언어에서 공통된 관용구입니다.

+0

감사. 통계로 멀티 스레딩을 시도 할 때 발생할 수있는 문제에 대해 읽고 있었기 때문에 묻습니다. – Anonymous

+0

C++의 통계와 관련된 MT 문제는 주로 읽고 쓰는 중일 때 나타납니다. 당신은 이미'VELOCITY'const를 선언했다. 이것은 당신이 그것으로부터 만 읽는다는 것을 의미한다. 여러 스레드에서 읽기 액세스는 잠재적으로 변경되지 않는 한 아무 문제가 없습니다. –

0

네, 일반적으로 '상수'라고들하지만. 객체 지향 디자인에서 일반적으로 사용되는 '불변 (invariant)'에 대한 설명은 anon 관련 기사를 참조하십시오.