En mi opinión, el uso de una clase llena de constantes está bien para las constantes. Si cambian de vez en cuando, recomiendo usar AppSettings en su configuración y la clase ConfigurationManager en su lugar.
Cuando tengo "constantes" que en realidad son extraídas de AppSettings o similar, siempre tendré una clase de "constantes" que envuelve la lectura del administrador de configuración. Siempre es más significativo tener en Constants.SomeModule.Setting
lugar de tener que recurrir directamente a ConfigurationManager.AppSettings["SomeModule/Setting"]
cualquier lugar que quiera consumir dicho valor de configuración.
Puntos de bonificación para esta configuración, dado SomeModule
que probablemente sería una clase anidada dentro del archivo Constants, podría usar fácilmente Dependency Injection para inyectar SomeModule
directamente en las clases que dependen de ella. También puede extraer una interfaz encima SomeModule
y luego crear una dependencia ISomeModuleConfiguration
en su código de consumo, esto le permitiría desacoplar la dependencia a los archivos Constants e incluso potencialmente facilitar las pruebas, especialmente si estas configuraciones provienen de AppSettings y los cambia usando transformaciones de configuración porque la configuración es específica del entorno.