Programação Funcional Avançada Em Java (muito além do map, flatMap e filter)
Aprenda conceitos avançados como Tail Recursion, Trampolines, Laziness e escreva do zero suas próprias implementações das classes Stream, Optional e List.
Gerencie erros/exceções de forma puramente funcional, evitando código spaghetti cheio de try ... catch.
Anos de estudos e práticas aplicadas em empresas como PayPal, Klarna e ThoughtWorks, foram compilados neste curso para que você consiga alcançar a mudança de paradigma de forma incremental em um curto período.
O que você vai aprender:
Funções
- Funções simples
- High Order Functions - Parte 1
- High Order Functions - Parte 2
- Identidade (Identity)
- Compondo funções (Composition)
- Currying e Partial
- Cache de resultados com Memoization
Postergando execução de código e evitando o famoso StackOverflow com Laziness
- Evitando execuçāo desnecessária de código com Laziness
- Recursão
- Tail Recursion (Recursão de Calda)
- Evitando o StackOverflow com Trampolines
Criando uma API funcional para Listas nāo funcionais do Java
- Transformando a lista com map
- Acessando a lista de forma funcional - Head e Tail
- Introdução ao foldRight e foldLeft
- Operações adicionais - copy/append/reverse
Implementando List - Sua primeira estrutura de dados funcional
- Escrevendo sua própria implementação de List do zero
- Implementando operações puramente funcionais
- Usando Trampolines para imprimir uma lista longa
- Removendo elementos da lista - drop/dropWhile
- Invertendo a lista - reverse
- Removendo o ultimo elemento - init
- Transformando a lista da direita para a esquerda - foldLeft
- Transformando a lista da esquerda para a direita - foldRight
- Compondo abstrações funcionais
- Calculando o tamanho da lista com foldLeft
- Refatorando a inversāo da lista
- Concatenando listas com foldRight
- Transformando uma lista - map
- Filtrando uma lista - filter
- Usando abstrações para achatar a lista - flatMap
- Mais operações e refatorações - length/reverse/concat
Lidando com ausência de valores de forma funcional
- Refatorando Null checks para uma abordagem funcional
- Escrevendo sua própria implementação do Optional do zero
Tratamento de erros de forma funcional, evitando try/catch spaghetti
- Removendo exceptions do nosso código
- Escrevendo sua própria versão do Try<T>
Streams
- Qual a diferença entre Streams e Lists? Apenas a API é diferente?
- Escrevendo sua própria implementação do Stream do zero
Duração: 10 horas
Estudar programação funcional pode se tornar frustrante pois geralmente você encontra materiais superficiais, básicos e repetidos ou extremamente acadêmicos e difíceis de entender.
Este curso foi desenvolvido para você, que sabe programar e deseja aprender conceitos avançados de forma prática.
Aprenda um modelo mental voltado as práticas funcionais que elevará sua abordagem de desenvolvimento de software independente da plataforma usada.
Desenvolva algoritmos e estruturas de dados de funcionais.
Aprenda em uma linguagem que você já conhece, os fundamentos que facilitarāo seu aprendizado de linguagens como Scala e Clojure.
Assista algumas aulas:
O curso não é introdutório, quais sāo os pré-requisitos?
Este curso é para programadores avançados. Como pré-requisitos você precisa conhecer os conceitos básicos de programação funcional, por exemplo operações como map, flatMap, o que é imutabilidade, transparência referencial e etc. Neste curso você vai implementar muitos recursos funcionais do início, portanto é importante que você já os tenha usado.
Torne-se um programador funcional avançado