O que são funções puras

Introdução Sempre que lhe falarem sobre funções puras tenha em mente o seguinte. Funções puras são funções que dado um parâmetro input sempre vão retornar o mesmo output sem causar efeitos colaterais side effects. Side effects quando ocorrem? Side effects (efeitos colaterais) ocorrem quando uma função ao ser executada causa mudanças no estado da aplicação
O que são funções puras

Introdução

Sempre que lhe falarem sobre funções puras tenha em mente o seguinte.

Funções puras são funções que dado um parâmetro input sempre vão retornar o mesmo output sem causar efeitos colaterais side effects.

Side effects quando ocorrem?

Side effects (efeitos colaterais) ocorrem quando uma função ao ser executada causa mudanças no estado da aplicação, o que são chamadas de funções impuras.

Por que usar funções puras?

Vou citar alguns tópicos que tornam tão interessante o uso desse tipo de função. Veja a seguir:

Refatoração

Refatore seu código sempre que possível, funções puras te proporcionam a facilidade de mudança para que você possa observar melhorias e aplica-las sem afetar o restante de sua aplicação.

Testabilidade

Pelo simples motivo de funções puras terem seus valores de entrada e saída determinados, isso vai facilitar muito a escrita de seus códigos unitários.

DRY (Don’t Repeat Yourself)

Reutilize suas funções! DRY (Não repita a si mesmo).

Devo usar apenas funções puras?

Não! É importante perceber que funções puras mesmo oferecendo diversos benefícios, não são utilizadas em todo o projeto. Afinal de contas, se todas as funções de seu projeto fossem funções puras, não haveriam efeitos colaterais side effects onde são visíveis ao mundo externo. Certifique-se de utilizar funções puras quando necessário, crie testes unitários e sem dúvidas quando houverem bugs, será mais fácil para você desvendá-los e efetuar sua correção.

Vamos praticar!

Vamos criar duas funções uma função pura e outra impura. Confira:

Função Pura:

## ES6 ##
const sum = (x, y) => x+y;

## ES5 ##
var sum = function (x, y) {
  return x + y;
}

Função Impura:

## ES6 ##
const x = 20;
const sum = (y) => x+y;

## ES5 ##
var x = 20;
var sum = function (y) {
  return x+y;
}

Repare que a variável x está sendo definida no estado global da aplicação, sendo assim o output da função sum sempre dependerá da mudança de estado global e não pelo input passado como parâmetro, o que torna a função dependente de fatores externos.

Conclusão

É isso aí galera, espero que esse post ajude vocês no desenvolvimento de belas funções, gerando maior produtividade para você e sua equipe.

Ah, se você tem alguma dúvida ou sugestão, faça nos comentários, estou sempre atento!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *