Utilizo espacios de nombres anidados para esto. Me gusta más que poner la enumeración dentro de una clase porque fuera de la clase tienes que usar el uso completo de MyClass :: MyEnum incluso si MyEnum no va a chocar con otra cosa en el alcance.
Al usar un espacio de nombres anidado, puede usar la sintaxis "using". También pondré enums que se relacionan con un subsistema dado en su propio archivo para que no tengas problemas de dependencia al tener que incluir el mundo para usarlos.
Así que en el archivo de cabecera de enumeración que se obtiene:
// MyEnumHeader.h
// Consolidated enum header file for this dll,lib,subsystem whatever.
namespace MyApp
{
namespace MyEnums
{
enum SomeEnum { EnumVal0, EnumVal1, EnumVal2 };
};
};
Y a continuación, en el archivo de cabecera de la clase que se obtiene:
// MyInterfaceHeader.h
// Class interfaces for the subsystem with all the expected dependencies.
#include "MyEnumHeader.h"
namespace MyApp
{
class MyInterface
{
public:
virtual void DoSomethingWithEnumParam (MyEnums::SomeEnum enumParam) = 0;
};
};
o uso como muchos archivos de cabecera como enumeración tiene sentido. Me gusta mantenerlos separados de los encabezados de clase para que las enumeraciones puedan ser params en cualquier parte del sistema sin necesidad de los encabezados de clase. Entonces, si desea usarlos en otro lugar, no tiene que tener la clase de encapsulamiento definida como lo haría si las enumeraciones se declararan dentro de las clases.
y como se mencionó antes, en el código externo se puede utilizar lo siguiente:
using namespace MyApp::MyEnums;
cualquier cosa "mejores prácticas" en relación siempre será subjetiva, pero creo que su compañero de trabajo está mal. .NET Framework no incluye un espacio de nombres de Enums, y por buenas razones. Coloque las enumeraciones en el espacio de nombres al que lógicamente pertenecen. (Y si es apropiado, sí, anótelos en una clase.) –
Hasta que su colega le haya explicado su problema, "estúpido" no es realmente una medida sobre la que usted pueda actuar. –
Dicho así, el compañero de trabajo está equivocado. Si la solución tiene muchos proyectos y las enumeraciones se usan en proyectos múltiples, tiene sentido, tenerlos en un solo lugar. – Bakudan