Я работаю над проектом и столкнулся со следующей проблемой именования .
Я хотел бы реализовать шаблон фабрики, но я не знаю, какие наименования классов лучше всего использовать (я переключаюсь с одного на другое, и это довольно много времени: S).
Обычно я использую пространства имен для разделения групп классов, но моя проблема заключается в следующем фрагменте кода:
class Mesh
{
...
};
namespace Factory
{
class Mesh
{
...
};
}
...
Factory::Mesh meshFactory;
Mesh *mesh = meshFactory.create(...);
Моя проблема в том, что, если я использую эту структуру, я могу смешивать классы Mesh (будь то фабричный класс или фактический класс Mesh). На самом деле это упрощение, моя проблема связана с еще несколькими пространствами имен, и классы с одинаковыми именами используются в обоих пространствах имен.
Я думал об использовании суффиксов для разделения классов и помещения их в одно и то же пространство имен, например:
class Mesh
{
...
};
class MeshFactory
{
...
};
MeshFactory meshFactory;
Mesh *mesh = meshFactory.create(...);
Так что нет никакой путаницы в том, что делают каждый класс.
Мне не нравится простое решение, которое состоит в том, чтобы использовать разные пространства имен и придумывать разные имена, потому что я бы в конечном итоге использовал имя пространства имен, различая их:
class Mesh
{
...
};
namespace Factory
{
class MeshFactory // I can't figure a better different name
{
...
};
}
Я предпочитаю второй вариант.
Есть ли веская причина, почему лучше первый вариант? Или есть другой способ? Что лучшие практики говорят об этом?