DEV Community

Francisco Zanfranceschi
Francisco Zanfranceschi

Posted on

[Conceito] - Transparência Referencial

Conteúdo original em https://twitter.com/zanfranceschi/status/1586379168719073281


Ei dev,

Sabia que mesmo que você não ainda saiba, você sabe o que é TRANSPARÊNCIA REFERENCIAL? 🫢

Segue o fio pra eu te provar ↓

cc @sseraphini

Image


Como é um conceito super simples de entender, vou tomar um pouco seu tempo e te contar que esse termo veio da filosofia.

Transparência Referencial significa basicamente que podemos substituir a referência sem alterar o significado.


Por exemplo, minha mãe se chama Márcia (é verdade) e se eu disser pro meu irmão "Márcia virá me visitar" ou "Nossa mãe virá me visitar" quero dizer a mesma coisa ao me referir a minha mãe de formas diferentes.


No nosso mundo da engenharia de software, a gente chama uma expressão de transparente referencialmente se pudermos substituí-la pelo valor de seu resultado.

Por exemplo:
a = b + (3 * 2)
é a mesma coisa que
a = b + 6

Se referir a (3 * 2) como 6 é a mesma coisa!


Isso pode ser usado com expressões ou funções mais complexas também, mas desde que elas sejam determinísticas!

Uma função determinística significa que dada uma entrada, ela SEMPRE vai retornar a mesma coisa.

Mas continua aqui que tem uma dica de ouro pra você.


Se você for uma pessoa encalhada, pega essa dica MARAVILHOSA pra quando a conversa não estiver fluindo muito bem com o crush. Só lança essa, ó:

"E OPACIDADE REFERENCIAL, hein? Complicado, né? Eu preferido TRANSPARÊNCIA REFERENCIAL." ─ Aí é só lascar o beijo depois dessa. 🤭


Como você pode ter imaginado, OPACIDADE REFERENCIAL é meio que o oposto de TRANSPARÊNCIA REFERENCIAL.

Se você usar uma referência não determinística (lembra o que é?), aí você estará fazendo uma referência opaca.


Se eu disser "visitarei minha amiga" e substituir por "visitarei Claudia", as referências a Claudia e minha amiga podem não ser para a mesma pessoa.

Uma expressão com uma referência opaca poderia ser como o seguinte:

a = hoje() + 2dias
e
a = 30/10/2022 + 2dias


"hoje()" não é uma função determinística porque ela vai mudar dependendo do dia. A expressão "a = hoje() + 2dias" contém OPACIDADE REFERENCIAL.


O conceito é super simples, diz aí.

Agora, diga-me você, a expressão a seguir contém TRANSPARÊNCIA REFERENCIAL? Se sim, qual a referência e o que poderia a substituir?

"Vou chamar meu crush pra assistir Netflix em minha casa."


Muito obrigado se leu até aqui! 💕

Top comments (0)