Desenvolvimento

4 fev, 2019

Trabalhando programação funcional – Imutabilidade

Publicidade

Neste artigo, irei tentar expressar uma das muitas maneiras de explicar dados imutáveis em programação em termos familiares, com isso é mais fácil entender o conceito.

O problema

Imagine que você acabou de publicar um artigo e compartilhou um link com todos. As pessoas estão aprendendo muito com a sua escrita e compartilhando com os outros. Depois de um tempo, você decide adicionar ou mudar alguma coisa, porque sua opinião mudou ou você aprendeu mais sobre o assunto. Você vai editar o artigo e atualizá-lo.

Agora, lembre-se daquelas pessoas que estão curtindo. Eles gostam e compartilham com os outros porque acharam interessante. Mas você acabou de alterar algo e isso significa que você potencialmente removeu o valor pelo qual alguns dos seus leitores gostaram e compartilharam esse artigo. Você pode imaginar a frustração quando as pessoas estão se referindo à sua escrita e quando voltam, elas vêem pontos completamente diferentes?

Soluções

Existem algumas formas comuns de como você pode editar ou adicionar mais conteúdo em um artigo. No caso de você perceber que sua opinião foi completamente alterada desde que o artigo foi publicado, é melhor escrever um novo. Se você quiser substituir algumas frases por uma nova declaração, basta aplicar o estilo rasurado a ela e colocar sua nova opinião logo após.

Mas se você quiser adicionar mais texto ou reescrever algo, você pode adicionar uma nota no início do artigo, dizendo que ele foi atualizado em uma data específica e colocar um pouco de resumo sobre quais são essas mudanças e por que você decidiu fazê-las.

Observe como que em todos os casos você faz a mudança explícita. Quando alguém voltar a ler esse artigo novamente, ele poderá observar exatamente o que foi alterado e ainda ter uma ideia do conteúdo original.

Dados imutáveis

Sua postagem no blog também é de dados. Na programação, pode ser um valor representado como um mapa hash. Você pode atribuir esse valor a uma variável. Por isso, possui um ponteiro para o valor, assim como uma pessoa possui um link para o artigo na web.

Se depois de um tempo, você quiser lê-lo novamente, é só usar esse link para acessar o artigo ou, se estivermos no programa, usarmos essa variável para acessar o valor. Nos dois mundos, você quer que os dados sejam exatamente os mesmos que você viu antes; eles devem permanecer inalterados. Mas se você alterar o artigo ou o valor, ele não será mais o mesmo e não haverá como acessar os dados antes.

Vamos aplicar a solução acima aos dados na programação. Em vez de editar o valor atual, crie um novo, que é basicamente o valor original, mais as alterações que você deseja fazer. É exatamente o que significa imutabilidade. Você não deve alterar os dados depois de criados. Crie uma cópia dos dados originais e inclua suas alterações. Desta forma, você terá acesso a ambos os valores, da mesma forma que seus leitores ainda poderão acessar o artigo original e um novo.

Veja uma amostra de como você pode alcançar a imutabilidade básica simples em JavaScript com Object.assign ao alterar objetos:

const user {
  name: 'Iago Cavalcante',
  age: 25
}
const updateUser = Object.assign(
  {},
  user,
  { age: 26 });