PROGRAMAÇÃO
FUNCIONAL
O que é? Como aplicar?
Quais os benefícios?
Co-fundadora da
Desplugue-se
GISELY
LUCAS
Engenheira de
Software na CI&T
Cientista da
Computação por
formação
O QUE É?
Paradigma de programação
Mas afinal o que é um paradigma
computacional?
PARADIGMA DE
PROGRAMAÇÃO
Modelo, padrão, que pode
conter regras e princípios
POO - Programação
Orientada a Objetos
Programação
orientada a eventos
Programação
Funcional ...
O QUE É?
Baseia-se em funções
Evitando alteração de estados e dados que
sejam mutáveis
FUNÇÕES MATEMÁTICAS
Testes:
f(x) = x * x
entrada saídaprocessamento
x x * x f(x)
x = 3 3 * 3 f(x) = 9
ONDE APLICAR?
Linguagens de paradigmas
funcionais
Haskel
LISP
Elixir
Clojure JS é
multiparadigma
PRINCÍPIOS E
PADRÕES
Como aplicar?
* 1º) Funções Puras:
Dada a mesma entrada a saída sempre será a mesma
f(x) = x * x
* 2º) Funções independentes de estados da aplicação:
Única dependência são os argumentos
Funções de primeira
classe
3º) Funções com efeitos colaterais controlados:
*
Alterações ou mutações são cuidadosamente controladas
3º) Funções com efeitos colaterais controlados:
*
Alterações ou mutações são cuidadosamente controladas
* 4º) Estruturas e Dados Imutáveis
Não alterar os estados e variáveis
Dê preferência a constantes
* 4º) Estruturas e Dados Imutáveis
Não alterar os estados e variáveis
Evitar manipulações de objetos
map
filter
reduce
Funções de ordem
superior
* 4º) Estruturas e Dados Imutáveis
Clonar Objetos
Objetos são referências
Não alterar os estados e variáveis
spread operator ...
Object.assign
cloneDeep (lodash)
* 5º) Composição de Funções :
Combinando duas ou mais funções
f(x) = x * x g(x) = 3 * x f(g(x))
PRINCIPAIS
BENEFÍCIOS
Como pode te ajudar?
* Benefícios
Técnica de otimização que armazena o
resultado de funções de alto custo, retornando
quando ocorrer a mesma entrada.
Fáceis de serem testadas
Possuem o mínimo de impactos e efeitos colaterais
Fácil manutenção
Paralelizável
Memoization
REFERÊNCIAS
Algumas dicas de como
mudar a mentalidade
FreeCodeCamp
What is functional
Programming?
Introdução a
Programação Funcional
Obrigada!
E-mail
gisely.lucas@gmail.com
LinkedIn
giselylucas

Programação funcional - o que é? Como aplicar? Quais os benefícios?