En C #, ¿cuál es la mejor práctica para encapsular variables que necesito usar en varios métodos? ¿Está bien simplemente declararlos en la parte superior de mi clase sobre los dos métodos?
Además, si estoy usando la configuración de la aplicación desde mi archivo de configuración, ¿debería usar un getter? Me gusta esto...
private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } }
¿Cuál es la mejor práctica?
c#
programming-practices
usuario1944367
fuente
fuente
WebConfigurationManager.AppSettings
porque es mucho más fácil cambiarlo más tardeRespuestas:
No solo está bien. Según el libro Clean Code, en realidad es una muy buena práctica, y el tío Bob realmente lo alienta. Una variable utilizada por muchos métodos podría mostrar un alto grado de cohesión entre los métodos. Además, un alto grado de variables de objeto también podría indicar que dicha clase debería dividirse en dos, por lo que declararlas como variables de objeto podría ayudarlo a encontrar candidatos de clase ocultos.
Las variables de nivel de objeto no son variables globales, así que no tenga miedo de usarlas si se comparten por varios métodos.
fuente
Encapsular sus configuraciones de manera constante es una gran idea.
Lo que hago es crear una clase de configuración, ya sea una clase global estática o varias clases de instancia que luego administraré con inyección de dependencia. Luego cargo todos los ajustes de configuración en esa clase al inicio.
También he escrito una pequeña biblioteca que hace uso de la reflexión para hacer esto aún más fácil.
Una vez que mi configuración esté en mi archivo de configuración
Hago una clase estática o de instancia según mis necesidades. Para aplicaciones simples con solo unas pocas configuraciones, una clase estática está bien.
Luego, utilizando mi llamada a la librería ya sea
Inflate.Static
oInflate.Instance
y lo bueno es que puedo usar cualquier fuente de valor clave.Todo el código para esto está en GitHub en https://github.com/Enexure/Enexure.Fire.Configuration
Incluso hay un paquete nuget:
Código de referencia:
fuente