내가 최근에 자주 발견 한 것은 해당 클래스 내의 특정 클래스와 관련된 typedef를 선언하는 것입니다.
class Lorem
{
typedef boost::shared_ptr<Lorem> ptr;
typedef std::vector<Lorem::ptr> vector;
//
// ...
//
};
이러한 유형은 코드의 다른 곳에서 사용됩니다.
Lorem::vector lorems;
Lorem::ptr lorem( new Lorem() );
lorems.push_back( lorem );
내가 좋아하는 이유 :
- 클래스 템플릿에서 발생하는 노이즈를 줄이고 등
std::vector<Lorem>
이됩니다Lorem::vector
. - 의도의 진술로 사용됩니다. 위의 예에서 Lorem 클래스는 참조 횟수를 통해 계산
boost::shared_ptr
되고 벡터에 저장됩니다. - 이를 통해 구현이 변경 될 수 있습니다. 즉, Lorem
boost::intrusive_ptr
이 이후 단계에서 (참조를 통해 ) 참조 횟수로 변경되도록 변경해야하는 경우 이는 코드에 최소한의 영향을 미칩니다. - 나는 그것이 더 예쁘고 읽기 쉽다고 생각합니다.
내가 싫어하는 이유 :
- 의존성에 문제가있는 경우가 있습니다-
Lorem::vector
다른 클래스 내에 포함하고 싶지만 Loem 선언을 전달 해야하는 경우 (또는 헤더 파일에 의존성을 도입하는 것이 아니라) 원하는 경우 약간 일치하지 않는 명시 적 유형 (예 :boost::shared_ptr<Lorem>
대신Lorem::ptr
). - 매우 일반적이지 않으므로 이해하기 어려울 수 있습니까?
나는 코딩 스타일에 객관적이 되려고 노력하기 때문에 그것에 대한 다른 의견을 얻는 것이 좋을 것입니다.