Gabriel Schade cardoso apresenta sobre programação funcional usando C# e F#. Ele discute conceitos como value containers, option types, modelagem de domínio e extração de dados externos como planilhas do Excel e dados do World Bank.
10. Vamos ao problema do null
Veja este método:
O que ele tem de errado?
# msptechday
11. Vamos ao problema do null
Ele é um método mentiroso
A assinatura dele me diz que ele irá retornar um
usuário, mas e se o id informado for inválido?
# msptechday
12. Vamos ao problema do null
Veja este método:
O que é um User option?
# msptechday
13. Vamos ao problema do null
Este é um método honesto, ele indica que talvez ele
retorne um usuário;
Ok, mas e nossa vida, no que muda?
# msptechday
14. Vamos ao problema do null
Mas isso não é só um null check obrigatório?
Quase, mas causa erro de compilação.
O erro acontece porque o tipo option é um value
container de algum tipo e não o tipo em si.
# msptechday
16. Value Container
Um container pode ser visto como um envelope ou
uma caixa que circunda um objeto/valor, colocando-o
em algum contexto específico.
Lidamos com este tipo de valor o tempo todo:
List;
Task;
Nullable.
# msptechday
17. Value Container
Imagine o seguinte cenário: você possui um dado do
tipo inteiro e precisa somá-lo com o valor 3.
# msptechday
18. Value Container
E se este mesmo número estiver em um array? Mesmo
que sozinho...
# msptechday
19. Value Container
Não podemos realizar a soma diretamente com o
valor, por conta do contexto que o cerca.
Por isso, comumente temos uma função para remover
o valor de seu contexto.
# msptechday
20. Value Container
No caso do array podemos utilizar o indexador para
extrair um elemento do contexto:
# msptechday
21. Value Container
E para o caso onde precisamos aplicar a operação
para o array inteiro?
# msptechday
22. Value Container
E para o caso onde precisamos aplicar a operação
para o array inteiro?
# msptechday
23. Value Container
E para o caso onde precisamos aplicar a operação
para o array inteiro?
# msptechday
24. Value Container
Geralmente utilizamos as funções ou comparação de
padrões (pattern matching) para alterar o contexto dos
valores.
Podemos nos aproveitar deste conceito para criar
novos objetos e classes que armazenam valores sob
um determinado contexto.
# msptechday
25. Value Container
Que tal criar um Option para o C#?
1. O tipo não pode assumir o valor null;
2. Precisamos de uma maneira de extrair a informação do
contexto;
3. Não deixaremos o programador acessar a informação,
caso ela esteja no estado inválido;
# msptechday
36. modelagem de Domínio
# msptechday
O F# também compreende multiplicação entre
unidades:
37. Extração de dados externos
# msptechday
Importação de tabelas do Excel;
Explorando o mundo com o World Bank;
Leitura de dados de uma página HTML;
38. Extração de dados – Excel
# msptechday
Importar informações para um sistema desenvolvido
em C#