✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Vários objetos gravando dados: como evitar isso

5

Você conhece aqueles momentos em que está trabalhando em um programa, e existem alguns lugares no seu código que, dependendo dos requisitos ou de um bug que se manifesta de alguma forma, está diretamente relacionado ao fato de você ter vários objetos gravando dados para o mesmo armazenamento de dados? Isso não é uma coisa boa.

Essa é uma maneira terrível de começar um post. Deixe-me tentar novamente.

Vários objetos gravando dados

Digamos que você esteja trabalhando em um programa e uma das coisas que o código faz é atualizar um contador em algum lugar do banco de dados para rastrear quantas alterações ocorreram em um pequeno período de tempo.

O problema: você tem vários lugares no código que estão atualizando esse contador.

Dados de Escrita de Múltiplos Objetos (Caso minha caligrafia seja tão ilegível quanto parece).

Eu não acho que muitos de nós começaram a escrever código assim, mas acontece, e quando isso acontece, acaba tendo todos esses efeitos colaterais que apenas geram todos os tipos de comportamento estranho. (Eu não conheço o termo acadêmico oficial para isso – e não me refiro a DRY – mas estou bem com “comportamento estranho" para este post.)

Sabemos intuitivamente que deveríamos ter um único lugar em que tudo isso está acontecendo, fatores externos – seja fluência de escopo, um mal-entendido de nossa parte para entender os requisitos, ou qualquer outra coisa – gera uma codificação ruim.

Então, temos todas essas entidades em todo o nosso sistema, cada uma delas falando com um único ponto em nosso banco de dados (ou qualquer armazenamento de dados que você quiser), mas nenhuma delas está ciente de que outras estão falando com elas.

Configurar limites

Podemos tentar combater isso com condicionais e outras coisas, mas só estamos piorando. então o que devemos fazer?

Eu sei que, como acontece com muitas coisas na programação, existem várias maneiras de resolver isso, mas talvez um dos primeiros passos da refatoração seja ter uma classe responsável por emitir atualizações para o armazenamento de dados.

Dessa forma, podemos ir da ilustração acima para algo assim:

Vários objetos gravando dados: como evitar isso

Vários objetos escrevendo dados: envie-os para um mediador.

Ou seja, todas as entidades da comunidade com este objeto e este objeto – e somente este objeto pode ler e gravar dados no banco de dados.

Existem alguns padrões de design que se encaixam nesse problema específico, mas isso está fora do escopo deste post. Em vez disso, o ponto que estou tentando mostrar é que, se você se deparar com um problema de:

  • As entidades estão gravando dados no armazenamento de dados,
  • Várias entidades estão fazendo isso,
  • E está gerando consequências não intencionais,

Em seguida, tente criar uma classe ou conjunto de classes estritamente responsável pela leitura e escrita de dados. Permita apenas que as informações passem por essas classes, em vez de várias classes fazerem a manipulação de dados.

Isso facilita o teste, facilita a depuração e, em última análise, facilita a leitura.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação