Devo usar métodos estáticos para operadores comuns DataAccess?
-
13-09-2019 - |
Pergunta
Eu não estou usando hibernate e isso não é uma alternativa válida em tudo. Eu desenvolvi um quadro baseado em ADO.NET. Este quadro tem operadores padrão para cada entidade do banco de dados.
Por exemplo, camadas de acesso de dados tem operadores padrão como o seguinte:
Insert
Update
Delete
Get
GetAll
Para acessar estes métodos, nós trabalhamos como tha código de exemplo abaixo:
DataAccess.Order daoOrder;
Entity.Order entityOrder;
DataAccess.Order daoOrder;
entityOrder = new Entity.Order();
entityOrder.ID = 1090;
daoOrder = new DataAccess.Order();
daoOrder.Insert(entityOrder);
Eu estava pensando sobre métodos de utilização estáticos, de modo que o código seria simples como:
Entity.Order entityOrder;
entityOrder = new Entity.Order();
entityOrder.ID = 1090;
DataAccess.Order.Insert(entityOrder);
Suponha que o sistema tem 30 mesas e 30 entidades. Precisamos de 30 DataAccess execução objetos como estáticos objetos. Esta estrutura estática iria nos salvar alguns ciclos de processador e poupar algum memória como seus custos menos para coletor de lixo.
Devo métodos uso estáticos para negócios e DataAccess operadores comuns nestes maneira? Você pode falar sobre vantagens e desvantagens sobre esta abordagem? (Quero dizer, memória, desempenho ...)
Solução
O diferencial de desempenho entre as duas opções que você menciona acima será praticamente inexistente. Gostaria de ir para o design mais limpo e mais flexível você pode gerenciar, tendo em conta o seu modelo de domínio e outros requisitos de negócios, e depois se preocupar com o ajuste de desempenho uma vez que está instalado e funcionando; não tente adivinhar os gargalos antes que você construiu seu sistema.
Veja este post por Greg Beech para uma análise de estática versus desempenho instância ..
A sua conclusão:
em chamar um método de dois bilhões de vezes que você poderia salvar-se em torno de 5ms, tornando-estática, que é uma economia de aproximadamente nada para cada chamada de método
Outras dicas
Se você usar métodos estáticos nesta classe, cada objeto que irá interagir com ele será altamente juntamente com ele. Como a matéria de fato o seu código não é bem-testável. Se eu fosse você eu evitar o uso de métodos estáticos / classes, bem como Singletons. A menos que você não quer test-drive a sua aplicação.