Pergunta

Eu estou trabalhando em um projeto e eu vim para o seguinte nomear problema .

Eu gostaria de implementar o padrão de fábrica, mas eu não sei as melhores namings classe a ser usada (i estou mudando de um para o outro e é bastante demorado: S).

Eu costumo ir para namespaces para separar grupos de classes, mas a minha problema É com esta parte específica do código:

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

Meu problema é que se eu usar essa estrutura que eu posso misturar as classes de malha (se é a classe de fábrica ou a classe malha real). Na verdade, esta é uma simplificação, o meu problema envolve mais alguns namespaces e as classes que têm o mesmo nome são usados ??em ambos os namespaces.

Eu estava pensando em talvez usar sufixos para separar as classes e colocá-los no mesmo namespace, por exemplo:

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

Portanto, não há confusão sobre o que cada classe fazer.

Eu não gosto da solução simples que é usar diferentes namespaces e inventar nomes diferentes, porque eu iria acabar usando o nome namespace fazer diferenciá-los:

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

Eu prefiro a segunda opção.

Existe uma razão sólida por isso é melhor a primeira opção? Ou existe outra maneira? O que significa melhores práticas dizer sobre isso?

Foi útil?

Solução

Quais são as razões que o levaram a nomear a classe malha "malha"?

Será que a classe de fábrica que produz uma parte exemplo malha todas as mesmas razões?

Se isso acontecer, então eles devem ser da mesma classe, com o mesmo nome.

Se isso não acontecer, então eles devem ser diferentes classes, com nomes diferentes.

Uma vez que é provável que eles só propósito da classe de fábrica será a instâncias produto da classe Mesh, eu sugiro o nome dele MeshFactory.

O namespace não é relevante.

Outras dicas

Lembre-se esta regra de ouro de "melhores práticas" no projeto OO: nomear suas classes é facilmente 50% da solução de design. Se você está tendo problemas entidades de nomeação, é indicativo do fato de que você não tem um modelo conceitual claro em sua mente.

Você tem que qualificar totalmente em cima de uso. Use aliases se os seus nomes totalmente qualificados são muito longos.

a.Mesh b.Mesh

Em geral e em .NET terra (especificamente C #) Gostaria de remapear a classe se não havia absolutamente nenhuma maneira em torno dela (ou seja, parte 3):

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

Exceto isso e que você está, obviamente, não falar C # (a questão deve ser marcado com c ++) eu usaria o namespace completo ao fazer referência a qualquer um. Enquanto inconveniente para digitá-lo ele só tem um erro ser um aborrecimento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top