Programação Funcional — Imutabilidade
Explicando a imutabilidade
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 porque 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.
Se você quiser adicionar mais texto ou reescrever algo, você pode adicionar uma nota no início do artigo que diz 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 torná-las .
Observe como em todos os casos você faz a mudança explícita. Quando alguém volta a ler esse artigo novamente, ele pode 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. Depois de um tempo você quer lê-lo novamente, então você usa esse link para acessar o artigo ou, se estivermos no programa, usamos 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 que eles sejam alterados.
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 + 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 podem 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 });