Em C #, qual é a melhor prática para encapsular variáveis que preciso usar em vários métodos? Tudo bem simplesmente declará-los no topo da minha classe acima dos dois métodos?
Além disso, se eu estiver usando as configurações do aplicativo no meu arquivo de configuração, devo usar um getter? como isso...
private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } }
Qual é a melhor prática?
c#
programming-practices
user1944367
fonte
fonte
WebConfigurationManager.AppSettings
porque é muito mais fáceis de mudar mais tardeRespostas:
Não está tudo bem. De acordo com o livro Clean Code, na verdade, é uma prática muito boa, e o tio Bob realmente a incentiva. Uma variável usada por muitos métodos pode mostrar um alto grau de coesão entre os métodos. Além disso, um alto grau de variáveis de objeto também pode sugerir que a referida classe deve ser dividida em duas, portanto, declará-las como variáveis de objeto pode ajudá-lo a descobrir candidatos a classes ocultas.
As variáveis no nível do objeto não são variáveis globais, portanto, não tenha medo de usá-las se elas devem ser compartilhadas por vários métodos.
fonte
Encapsular suas configurações de maneira constante é uma ótima idéia.
O que faço é criar uma classe de configurações, uma global estática, uma ou várias instâncias, que gerenciarei com injeção de dependência. Em seguida, carrego todas as definições de configuração nessa classe na inicialização.
Também escrevi uma pequena biblioteca que faz uso da reflexão para tornar isso ainda mais fácil.
Quando minhas configurações estiverem no meu arquivo de configuração
Eu faço uma classe estática ou de instância, dependendo das minhas necessidades. Para aplicativos simples com apenas algumas configurações, uma classe estática é boa.
Então, usando minha chamada de biblioteca ou
Inflate.Static
ou,Inflate.Instance
o interessante é que posso usar qualquer fonte de valor-chave.Todo o código para isso está no GitHub em https://github.com/Enexure/Enexure.Fire.Configuration
Existe até um pacote de pepitas:
Código de referência:
fonte