나는 무엇을 해야 하는가 있는 경우 같은 클래스 이름을 다른 네임스페이스?

StackOverflow https://stackoverflow.com/questions/816088

  •  03-07-2019
  •  | 
  •  

문제

나는 프로젝트에서 작업 그리고 다음 문제는 이름.

고 싶을 구현하는 공장이 본 모르겠지만 최고의 클래스:현재 사용하는(내가 변경 다른 하나에서 그것은 매우 시간이 많이 소요되:S).

나는 보통 이동을 위한 네임스페이스는 별도의 그룹 의 클래스,그러나 나 문제 이는 특정 코드:

class Mesh
{
    ...
};
namespace Factory
{
    class Mesh
    {
        ...
    };
}
...
Factory::Mesh meshFactory;
Mesh *mesh = meshFactory.create(...);

문제 는 내가 사용하는 경우 이 구조는 내가 할 수 있습 섞어 메쉬(제지 공장은 클래스 또는 실제 메시 클래스).실제로,이것은 단순화,나의 문제를 포함한 일부 이상의 네임스페이스이고 있는 클래스의 동일한 이름에서 모두 사용 네임스페이스입니다.

내 생각에 어쩌면 사용하는 접미사를 별도의 클래스고에 넣어 같은 네임스페이스,예를 들어:

class Mesh
{
     ...
};
class MeshFactory
{
     ...
};
MeshFactory meshFactory;
Mesh *mesh = meshFactory.create(...);

이 없다,그래서 혼란에서 무엇을 각 클래스는 않습니다.

내가 좋아하지 않는 간단한 솔루션을 사용하여 다른 네임스페이스를 개발하고 다른 이름이기 때문에,나는 끝까지 사용하는 네임스페이스 이름을 할별:

class Mesh
{
    ...
};
namespace Factory
{
    class MeshFactory // I can't figure a better different name
    {
        ...
    };
}

내가 선호하는 두 번째 옵션입니다.

이 있는 단단한 이유가 더 나은 첫 번째 옵션?이나 또 다른 방법은 무엇입니까?무엇 최고의 모범 사례에 대해 말 이?

도움이 되었습니까?

해결책

어떤 이유에서 발생하는 당신의 이름을 망 클래스의"메시"?

는 공장 등을 생산하는 메시 인스턴스 공유 모두 같은 이유는?

않는 경우에,그들은 동일해야합 등,같은 이름입니다.

하지 않는 경우에,그들은 해야,다른 클래스가 다른 이름입니다.

확률이 높기 때문에 그들은 유일한 목적의 공장 클래스의 것 인스턴스를 생성한 메시의 클래스,나는 당신이 그것의 이름을 MeshFactory.

네임스페이스는 관련이 없습니다.

다른 팁

이것을 기억 황금의 규칙"모범 사례에서"OO 디자인:이름 수업이 쉽게 50%의 디자인 솔루션을 제공합니다.는 데 문제가 있는 경우 이름 지정 엔터티를 나타내는 사실이 없는 명확한 개념적 모형에서 당신의 마음입니다.

당신은 완전히 자격에 따라 사용.별칭을 사용하면 완전한 자격을 갖춘 이름은 너무 오래입니다.

니다.Mesh b.Mesh

에서 일반 및습니다.NET 랜드(특히 C#)내가 다시 매핑 클래스가 있다면 절대로 그것은 주위에 방법(즉,3rd 파티):

using MyMesh = My.Mesh;
using FooMesh = Foo.Mesh;

을 제외하고는 그리고 당신은 분명히 말하지 않는 C#(는 질문에 태그를 지정 해야 하는 c++)나는 사용 네임스페이스를 참조하는 경우다.하는 동안 불편형 그것은 그것은 단 한 번의 실수를합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top