DEV Community

Pedro Augusto
Pedro Augusto

Posted on

Programação Funcional com JavaScript

> Esse post é baseado nas minhas anotações do vídeo de introdução a programação funcional com JavaScript do canal Fun Fun Function Clique aqui! para ver.

Por que programar com JavaScript Funcional

Com a programação funcional somos capazes de escrever programas com menos bugs e em menos tempo, por ser um código de fácil interpretação ele produz menos bugs, do mesmo modo, como podemos reaproveitar muito código então gastamos menos tempo. No JavaScript e em outras linguagens de programação, funções são valores como podemos ver a seguir:

  • Basic Functions:
var triple = function triple (x) {

  return x * 3

} 
Enter fullscreen mode Exit fullscreen mode

Assim como strings, funções podem ser atribuidas à variáveis, ou passadas para outras funções, que são conhecidas como High-Order Functions. Mas no que essas funções são boas? Composição o fato de que nós podemos pegar uma função e colocá-la em outra função, nos permite compor várias funções menores em funções maiores.

  • High-Order Functions:
 var animals = [

  { name: 'Fluffykins', species: 'rabbit' },

  { name: 'Caro', species: 'dog' },

  { name: 'Hamilton', species: 'dog' },

  { name: 'Harold', species: 'fish' },

  { name: 'Ursula', species: 'cat' },

  { name: 'Jimmy', species: 'fish' }

] 

// Método filter (High-order Function)
var dogs = animals.filter(function(animal) {
return animal.species == 'dog'
})

// Filter com loop for
var dogs = []
for(var i = 0; i < animals.length; i++) {
if (animals[i].species === 'dog')
    dogs.push(animals[i])
}

Enter fullscreen mode Exit fullscreen mode

Podemos ver que com o método filter usamos bem menos código, mas isso não é apenas pela sintaxe visualmente curta, é porque na verdade estamos realmente escrevendo menos código e lógica. A razão pela qual precisamos de menos lógica é porque quando nós escrevemos nosso software em funções pequenas e simples elas podem ser integradas . O que nos permite reutilizar em diversos lugares no nosso código.

var isDog = function (animal) {
return animal.species === 'dogs'
}

var dogs = animals.filter(isDog)
var otherAnimals = animals.reject(isDog)
Enter fullscreen mode Exit fullscreen mode

Como podemos ver, ao separarmos a função de callback, é possível criar um componente reutilizavel em outras high-order functions como no caso do reject que é o contrário do filter Comparando isso ao loop for podemos ver que nós quebramos o problema de forma muito limpa em problemas separados. Dessa forma somos capazes de pensar, interpretar e corrigir esses problemas separadamente. E isso é muito mais fácil do que quando as soluções estão todas misturadas iguais no loop for. Isso significa que podemos escrever códigos com menos bugs em menos tempo.

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay