O que é Programação Funcional?

Programação funcional é sobre escrever código que seja limpo, previsível e mais fácil de testar e depurar. Dois conceitos-chave que exploraremos hoje são funções puras e evitar efeitos colaterais. Vamos começar com funções puras. Uma função pura é uma função que, dado o mesmo input, sempre retornará o mesmo output e não modifica nada fora de si mesma. Aqui está um exemplo de uma função pura:
function add(a, b) {
  return a + b;
}
Esta função é pura porque sempre retorna o mesmo resultado para as mesmas entradas e não altera nada fora de si mesma. Não importa quantas vezes você chame add(2, 3), ele sempre retornará 5 e não afetará nenhuma outra parte do seu programa. Agora, vamos contrastar isso com uma função impura:
let total = 0;
function addToTotal(value) {
  total += value;
  return total;
}
Esta função é impura porque modifica uma variável fora dela mesma (total). O resultado de addToTotal(5) será diferente dependendo do valor que total tinha antes da função ser chamada. Essa imprevisibilidade pode tornar nosso código mais difícil de entender e depurar. Isso nos leva ao nosso próximo conceito importante que são os efeitos colaterais. Um efeito colateral é qualquer alteração que ocorre no estado do programa quando uma função é chamada. Isso pode incluir modificar uma variável global, escrever em um arquivo ou fazer uma chamada de API. Funções puras não têm efeitos colaterais mas funções impuras têm esses. Evitar efeitos colaterais é um princípio fundamental da programação funcional. Quando minimizamos os efeitos colaterais, nosso código se torna mais previsível e mais fácil de testar. Ao escrever código, nosso objetivo principal deve ser fazer com que as funções façam uma coisa e a façam muito bem sem alterar outras partes do nosso programa. Aqui está um exemplo de uma função com um efeito colateral:
function greet(name) {
  console.log(Hello, ${name}!);
}

greet("Alice");
Esta função tem um efeito colateral porque ela interage com o mundo externo registrando no console. Em programação funcional, podemos reescrever isso como:
function greet(name) {
  return Hello, ${name}!;
}
console.log(greet("Alice"));
Agora greet é uma função pura que simplesmente retorna uma string e lidamos com o efeito colateral (registro no console) separadamente. A programação funcional nos incentiva a compor nossos programas usando funções puras dividindo nosso código em pequenas partes previsíveis. E assim, podemos construir programas que são mais fáceis de entender, testar e manter.
Este módulo não possui perguntas. Marque como concluído.