DEV Community

Cover image for O que são funções puras?
Cristian Magalhães
Cristian Magalhães

Posted on • Edited on

O que são funções puras?

Hoje vou explicar sobre um conceito muito interessante e bem útil para aqueles desenvolvedores que desejam criar códigos mais limpos e mais testáveis.

Para início de conversa, para uma função ser considerada pura ela deve seguir duas regras. Ser determinística e não causar nenhum efeito colateral.

Livre de efeito colateral

O que significa uma função ser livre de efeito colateral? Vamos falar um pouco sobre o que é um efeito colateral e pegar um exemplo bem simples. Estou com dor de cabeça e tomo um remédio para curar essa dor de cabeça, porém eu sinto sono por conta do remédio e a minha dor de cabeça é curada. Nesse caso a função do remédio é cumprida que é curar a dor de cabeça e ele sempre vai fazer isso quando necessário, só que para isso acontecer ele deixa um efeito colateral que é o sono. Ou seja, algo aconteceu fora daquele escopo do objetivo de tomar remédio.
Agora vamos trazer isso para programação. Vamos considerar que temos uma função que soma dois números e retorna o resultado dessa soma.

const soma = (n1, n2) => n1 + n2;
Enter fullscreen mode Exit fullscreen mode

Essa função é livre de efeitos colaterais, pois ela simplesmente soma dois números e retorna os seus resultados, porém se essa função fizesse a soma e salvasse esse valor em um banco de dados? Bom isso é um efeito colateral, ela fez a soma, porém afetou outra área do sistema.

Outro exemplo seria uma função que escreve algo em um arquivo ou até mesmo lê, ou escreve em um banco de dados, nesses casos são funções com efeitos colaterais. Pois, algo é afetado após a sua execução.

Esses são exemplos bem simples do que seriam uma função livre de efeitos colaterais. Agora cabe a você entender e analisar cada caso de suas funções.

Determinística

Esse é um ponto mais simples. Uma função determinística é uma função a qual toda vez que eu passar a mesma entrada ela me torna o mesmo resultado. Vamos usar novamente aquela função de soma como exemplo:

const soma = (n1, n2) => n1 + n2;
Enter fullscreen mode Exit fullscreen mode

Considerando a função acima toda vez que chamarmos soma e passarmos 2 e 2 soma(2,2) o resultado sempre será 4, independente do que aconteça ou em qual momento esteja o resultado sempre será 4. Logo é uma função determinística.

É pura?

Explicado às duas regras uma função só será pura quando às duas regras forem cumpridas. Caso contrário não, não é uma função pura.

O que isso muda na minha vida?

Bom sabendo o que são funções puras, agora você escrever mais funções assim testá-la de forma isolada e com maior assertividade, assim separando muito melhor as responsabilidades delas dentro do seu código. Fora o fato de consequentemente serem funções menores e mais fáceis de serem entendidas.

Se chegou até aqui, me segue la nas redes vizinhas.

Referências

259 - O que é uma Função Pura? 🤔🤔🤔 | theWiseDev Functional by Otavio Lemos

Top comments (0)