SlideShare uma empresa Scribd logo
1 de 32
Globalcode – Open4educationGlobalcode – Open4education
O que esperar do C# 7
Tania Raquel Stormovski de Andrade
Software developer at Trinca
Globalcode – Open4education
Repositório da apresentação
https://github.com/TeteStorm/TDC2016Presentation
Contato
email: tanstormandrade@gmail.com
linkedin: https://br.linkedin.com/in/taniastormovski
Globalcode – Open4education
Objetivo da palestra
O objetivo principal é apresentar brevemente
algumas das novas features previstas para
contemplar o C# 7 e que atualmente já estão “bem
aceitas” que farão parte da nova release.
Brevemente iremos abordar qual foi o intento de
cada umas das versões do C# disponíveis até hoje
e também comentar um pouquinho sobre o que
guiou o pensamento da equipe de design do C#
para chegar a essas features selecionadas.
Globalcode – Open4education
Agenda
• C# 7 visão geral e status da versão
• Ambiente de execução
VS 15 Preview 4 e o novo Visual Studio Installer
• Breve overview das versões do C#
• Principais focos da nova versão da linguagem
• Consumo de dados
• Aumento de performance
• Simplificação de código
• Apresentando algumas novas features:
• Pattern Matching
• Tuples
• Desconstruction
• Local Functions
• Ref return and Locals
• Out var
Globalcode – Open4education
Futuro do C#
A próxima versão da linguagem está sendo
projetada com código aberto, os comentários e
discussões dos membros da equipe e da
comunidade. À medida que vão sendo testadas e
validadas o time determina quais recursos devem
ser adicionados à linguagem, o legal disso tudo é
o acompanhamento real time que podemos ter da
evolução das features, bem como as idéias que
por alguma razão vão sendo abandonadas.
Globalcode – Open4education
Documento oficial do status da
linguagem no github acessível em
https://github.com/dotnet/roslyn/blob/master/docs/Language%20Feature%20Statu
s.md
Globalcode – Open4education
Ambiente de execução
Até antes do lançamento da release do Visual Studio 15 preview 4, que aconteceu
dia 22 de agosto de agosto dependíamos de configurações adicionais, no caso
símbolos de compilação condicionais, para testarmos as novas features propostas
no C#. Agora com o advento da nova release grande parte das features finalizadas
já estão disponíves sem precisarmos dos simbolos condicionais.
Globalcode – Open4education
VS 2015 Preview 4 - Nova
experiência de instalação
Como primeiro impacto nos deparamos com um nova
experiência de instalação. É um proposta diferenciada das
versões anteriores promete ser uma versão mais leve e
otimizada..
Conforme a Microsoft a nova versão tem os seguintes principais
propósitos:
● Reduzir o volume mínimo de memória do Visual Studio.
● Instalar mais rapidamente e com menos impacto no sistema, e
desinstalar de forma limpa.
● Facilitar a seleção e instalação apenas dos recursos necessários.
Globalcode – Open4education
New Visual Studio Installer
Globalcode – Open4education
New Visual Studio Installer
A instalação mais básica, que
contempla somente o core
editor para execução via shell
tem 418 MB.
Se adicionarmos o pacote
básico para desktop completo
a instalação pula para 1,02 GB.
É possível e bem fácil
selecionar itens adicionais e
ver tudo que está sendo
instalado
Globalcode – Open4education
Versões do C#
As novas funcionalidades em cada versão do C #, até agora (com
excepção do C # 6.0 talvez) giraram em torno de um tema específico:
C # 2.0 introdução do generics.
C # 3.0 habilitar o LINQ como extension method, expressões lambda,
tipos anônimos (anonymous types) e outros recursos relacionados.
C # 4.0 interoperabilidade com linguagens dinâmicas e não tipadas.
C # 5.0 simplificar a programação assíncrona com advento do async e
await.
C # 6.0 teve o seu compilador completamente reescrito do zero e
introduziu uma variedade de pequenos recursos e melhorias que
ficaram mais fáceis de ser implementadas agora na versão 7..
Globalcode – Open4education
De acordo com o leader de design do C#, Mads Torgersen o
foco das novas features adicionadas na versão são:
“Data consumption, code simplification and
performance.”
Vamos ver brevemente o que guiou o time de design da
linguagem nesse sentido:
Globalcode – Open4education
Consumo de dados
Conforme a equipe de desenvolvimento da
linguagem aqui se concentram as maiores
features da nova versão do C#. Foi pensando na
demanda cada vez maior do uso de serviços na
web e na necessidade de facilitar o trabalho com
interfaces de dados externos várias novas
features foram desenvolvidas para ajudar nesse
sentido como Pattern matching e Tuples,
Descontruction.
Globalcode – Open4education
Performance
Principalmente o aumento da participação de
dispositivos móveis foi o que fez do desempenho
uma consideração importante novamente. Existem
recursos planejados para C # 7.0 que permitem
otimizações de desempenho, que anteriormente
não eram possíveis no framework .NET tais como
Local functions, Ref Returns e Out var
Globalcode – Open4education
Simplificação do código
Aqui entra uma evolução da versão
anterior, com várias pequenas alterações
adicionais construídas sobre o trabalho feito para
C # 6.0 para permitir uma maior simplificação do
código escrito como Binary Literals e Digit
Separator.
Globalcode – Open4education
Pattern Matching
C # 7.0 introduz a noção de padrões, que,
abstratamente falando, são elementos sintáticos
que pode testar se um valor tem uma certa "forma"
ou padrão, e extrair informações a partir do valor.
Neste momento, estão restritos a valores
constantes, tipos e var .Pode ser utilizado de duas
maneiras: utilizados em conjunto com o operador
“is” e nos “case”s de uma declaração “switch.
Pode ter restrições com when nos cases e vale
lembrar no switch: a ordem importa, o default vai
ser sempre avaliado por último e o null no final não
é unreachable, pode ser tratado.
Globalcode – Open4education
Constant pattern
public static void CalculateBodyFat(BodyFatSkinfoldProtocol bodyFatProtocol)
{
decimal bodyFat = 0;
var bodyFatPercent = 0D;
//Utilização do "is"
// Constant pattern
// Antes podíamos validar se o valor era nulo ou se o valor era de um determinado tipo
// if (bodyFatProtocol == null) { ... }
// if (bodyFatProtocol is BodyFatSkinfoldProtocol) { ... }
// Agora podemos validar diretamente em constantes (ou números)
if (bodyFatProtocol is null)
throw new ArgumentNullException("Protocol must not be null");
}
Globalcode – Open4education
Type pattern
public static void CalculateBodyFat(BodyFatSkinfoldProtocol bodyFatProtocol)
{
decimal bodyFat = 0;
// Type pattern
// Aqui além de testar o tipo extraímos o valor em uma nova variável do tipo proposto
if (bodyFatProtocol is Guedes protocol)
{
//{ ... }
bodyFat = protocol.Height;
}
else if (bodyFatProtocol is Faulkner protocol)
{
//{ ... }
bodyFat = protocol.Height;
}
}
Globalcode – Open4education
Var pattern
public static void CalculateBodyFat(BodyFatSkinfoldProtocol bodyFatProtocol)
{
decimal bodyFat = 0;
// Var pattern
// Aqui sempre vai dar match, a comparação simplemente coloca o valor obtido
//numa nova variável que será do tipo do input
if (bodyFatPercent is var bf)
{
Console.WriteLine(bf);
}
}
Globalcode – Open4education
Tuples e Descontruction
Para utilizarmos ambos recursos é necessário instalarmos o pacote do nuget
System.ValueTuple
Globalcode – Open4education
Tuples e Descontruction
O novo conceito de Tupla inserido no C# 7 não tem a ver com o atual
tipo tupla que se trata de um reference type, e claro vamos querer
evitar usá-lo em códigos onde desempenho seja imprescindível. Se
tratando de um tipo imutável qualquer mudança vai exigir que
realoquemos um novo objeto.
O C# 7 oferece um novo tipo de tupla como valuer type, mutável e mais
eficiente em termos de performance.
A ideia básica é permitir declarar tipos como uma tupla para que uma
declaração possa conter mais de um valor e, de forma semelhante, os
métodos possam retornar mais de um valor.
O caso mais comum é para permitir múltiplos valores de retorno de uma
função sem precisar de parâmetros “out “(tuple types). Mas também
teremos literais de tuplas (tuple literals), permitindo criar uma variável
tipada como uma tupla.
Globalcode – Open4education
Tuples
// Retorna 3 valores dentro de um elemento tupla que podem ser acessados atráves das propriedades
Item1, Item2, Item3
static (decimal, decimal, string) GetProtocolValues(BodyFatSkinfoldProtocol bodyFatProtocol)
{
return (bodyFatProtocol.Weight, bodyFatProtocol.BodyFatPercent, bodyFatProtocol.ProtocolName);
}
// Retorna 3 valores dentro de um elemento tupla mas de maneira nomeada com variáveis explícitas
// que poderão ser acessadas atráves dos nomes das propriedades
static (decimal Weight, decimal TotalBodyFat, string Protocol)
GetNamedProtocolValues(BodyFatSkinfoldProtocol bodyFatProtocol)
{
var returnValues = (bodyFatProtocol.Weight, bodyFatProtocol.BodyFatPercent,
bodyFatProtocol.ProtocolName);
return returnValues;
}
Globalcode – Open4education
Descontruction
Outra maneira de consumir tuplas é utilizando o conceito de
deconstruct, nada mais é do que uma sintaxe para dividir
uma tupla (ou outro objeto, não é uma funcionalidade
exclusiva para o uso com tuplas) em suas partes e atribuir
as partes individualmente para variáveis.
Globalcode – Open4education
Descontruction
public static void Deconstruct(this BodyFatSkinfoldProtocol bodyFatProtocol, out string
protocolName, out string formuleDescription)
{
protocolName = bodyFatProtocol.ProtocolName;
formuleDescription = bodyFatProtocol.FormuleDescription;
}
// Automaticamente chama o método ou extension method Desconstruct implementado no objeto
public static void PrintDesconstruction()
{
var guedes = new Guedes() { Height = 167, Weight = 58 };
(var name, var description) = guedes; //calls method Deconstruct
Console.WriteLine($"Protocol name: {name}");
Console.WriteLine($"Protocol description: {description}");
string x;
guedes.Deconstruct(out x);
Console.WriteLine($"Protocol and description: {x}");
}
Globalcode – Open4education
Local functions
Permite a declaração de funções auxiliares
aninhados dentro de outras funções. Isto não
só irá reduzir o seu escopo, mas também
permite o uso de variáveis ​​declaradas em no
escopo principal, sem alocar memória adicional
na pilha.
Globalcode – Open4education
public void CalculateBodyFatMass(decimal weight, decimal height)
{
if (weight <= 0)
throw new NullReferenceException("weight cannot be null");
if (height <= 0)
throw new NullReferenceException("height cannot be null");
void CalculateBodyFat()
{
this.TotalBodyFat = weight + (height * height) /2;
}
CalculateBodyFat();
}
}
Globalcode – Open4education
Ref Returns and locals
Esta proposta adiciona suporte em C # para
devolver valores a partir de métodos de
referência. Além disso, as variáveis locais
podem ser declaradas como variáveis "ref". Um
método poderia retornar uma referência para
uma estrutura de dados interna em vez de
retornar uma cópia do valor.
Globalcode – Open4education
Ref Returns and locals
public class BodyWeight
{
public BodyWeight(int currentWeight)
{
_weight = currentWeight;
}
private int _weight = 0;
public ref int GetWeight()
{
return ref _weight;
}
}
Globalcode – Open4education
Ref Returns and locals
BodyWeight myWeight = new BodyWeight(58);
// Mostra valor atual e incrementa 2kg usando a maneira padrão de incrementar
// que é método Increment
Console.WriteLine("Current weight value: ");
Console.WriteLine(myWeight.GetWeightValue());
Console.WriteLine("Increment 2 kilogramans using the public method Increment");
myWeight.Increment(2);
Console.WriteLine("Current weight value after increment: ");
Console.WriteLine(myWeight.GetWeightValue());
// Pega a propriedade disponibilizada por referência
// e modifica diretamente a propriedade interna do objeto
ref int teste = ref myWeight.GetWeight();
// incrementa em 1 kg utilizando diretamente a prop weight obtida através do método ref int GetWeight();
teste++;
Console.WriteLine("Current weight value after external increment: ");
Console.WriteLine(myWeight.GetWeightValue());
Console.ReadKey();
Globalcode – Open4education
Out var
Remove a necessidade de variáveis out serem pré
declaradas e também permite o uso de var para declarar o
tipo da variável que será inferido pelo compilador (não
funciona em casos onde o compilador não consegue inferir
a tipagem por causa de algum overload)
Globalcode – Open4education
Out var
// Deconstruct in new Out mode
public static bool DesconstructionInOutVariables(out string name, out string description)
{
var guedes = new Guedes() { Height = 167, Weight = 58 };
(name, description) = guedes; //calls method Deconstruct
return true;
}
Chamada:
//Como ainda existe restrição de escopo para conseguir acessar as variávies precisamos
criar um para poder acessá-las
if(DesconstructionInOutVariables(out string name, out string description))
{
Console.WriteLine($"Protocol name: {name}");
Console.WriteLine($"Protocol description: {description}");
}
Globalcode – Open4education
Out var
// Out Var
public static void PrintOutVars(string weight)
{
if (int.TryParse(weight, out var intWeight))
{
Console.WriteLine(new string('*', intWeight));
}
}

Mais conteúdo relacionado

Mais procurados

Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Renato Groff
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Renato Groff
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao DockerRafael Dutra
 
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018Renato Groff
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & VueHerbert Henrique
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Javatdc-globalcode
 
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Renato Groff
 
[CodeBEAM BR 2020] Construindo e Distribuindo CLIs com Elixir
[CodeBEAM BR 2020] Construindo e Distribuindo CLIs com Elixir[CodeBEAM BR 2020] Construindo e Distribuindo CLIs com Elixir
[CodeBEAM BR 2020] Construindo e Distribuindo CLIs com ElixirAmadeu Cavalcante
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7tdc-globalcode
 
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Renato Groff
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressTiago Hillebrandt
 
Precisamos falar sobre Testes de infraestrutura
Precisamos falar sobre Testes de infraestruturaPrecisamos falar sobre Testes de infraestrutura
Precisamos falar sobre Testes de infraestruturaRafael Gomes
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Renato Groff
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
 
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função saveAulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função saveJorge Pires
 

Mais procurados (20)

Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & Vue
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
 
[CodeBEAM BR 2020] Construindo e Distribuindo CLIs com Elixir
[CodeBEAM BR 2020] Construindo e Distribuindo CLIs com Elixir[CodeBEAM BR 2020] Construindo e Distribuindo CLIs com Elixir
[CodeBEAM BR 2020] Construindo e Distribuindo CLIs com Elixir
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
 
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
 
Precisamos falar sobre Testes de infraestrutura
Precisamos falar sobre Testes de infraestruturaPrecisamos falar sobre Testes de infraestrutura
Precisamos falar sobre Testes de infraestrutura
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Git alem do basico
Git alem do basicoGit alem do basico
Git alem do basico
 
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018
 
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função saveAulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
 

Destaque

TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...
TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...
TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...tdc-globalcode
 
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0tdc-globalcode
 
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDBTDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDBtdc-globalcode
 
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...André Bueno
 
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...tdc-globalcode
 
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...tdc-globalcode
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaMarcio Junior Vieira
 
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de ExperienciaTDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experienciatdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...tdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...tdc-globalcode
 
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...tdc-globalcode
 
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...tdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...tdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Business Coach, o Analista de Negó...
TDC2016POA | Trilha Analise de Negocios -  Business Coach, o Analista de Negó...TDC2016POA | Trilha Analise de Negocios -  Business Coach, o Analista de Negó...
TDC2016POA | Trilha Analise de Negocios - Business Coach, o Analista de Negó...tdc-globalcode
 
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídosTDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídostdc-globalcode
 
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...tdc-globalcode
 
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...tdc-globalcode
 
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com DockerTDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Dockertdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Especificação por exemplo como fer...
TDC2016POA | Trilha Analise de Negocios -  Especificação por exemplo como fer...TDC2016POA | Trilha Analise de Negocios -  Especificação por exemplo como fer...
TDC2016POA | Trilha Analise de Negocios - Especificação por exemplo como fer...tdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - A Análise Estratégica garantindo os...
TDC2016POA | Trilha Analise de Negocios - A Análise Estratégica garantindo os...TDC2016POA | Trilha Analise de Negocios - A Análise Estratégica garantindo os...
TDC2016POA | Trilha Analise de Negocios - A Análise Estratégica garantindo os...tdc-globalcode
 

Destaque (20)

TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...
TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...
TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...
 
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
 
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDBTDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
 
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...
 
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
 
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
 
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de ExperienciaTDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
 
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
 
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
 
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
 
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
 
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
 
TDC2016POA | Trilha Analise de Negocios - Business Coach, o Analista de Negó...
TDC2016POA | Trilha Analise de Negocios -  Business Coach, o Analista de Negó...TDC2016POA | Trilha Analise de Negocios -  Business Coach, o Analista de Negó...
TDC2016POA | Trilha Analise de Negocios - Business Coach, o Analista de Negó...
 
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídosTDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
 
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
 
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
 
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com DockerTDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
 
TDC2016POA | Trilha Analise de Negocios - Especificação por exemplo como fer...
TDC2016POA | Trilha Analise de Negocios -  Especificação por exemplo como fer...TDC2016POA | Trilha Analise de Negocios -  Especificação por exemplo como fer...
TDC2016POA | Trilha Analise de Negocios - Especificação por exemplo como fer...
 
TDC2016POA | Trilha Analise de Negocios - A Análise Estratégica garantindo os...
TDC2016POA | Trilha Analise de Negocios - A Análise Estratégica garantindo os...TDC2016POA | Trilha Analise de Negocios - A Análise Estratégica garantindo os...
TDC2016POA | Trilha Analise de Negocios - A Análise Estratégica garantindo os...
 

Semelhante a C# 7 novas features

Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade....NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...Renato Groff
 
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
Novidades do ASP.NET Core 2.1 - TDC 2018 - São PauloNovidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
Novidades do ASP.NET Core 2.1 - TDC 2018 - São PauloRenato Groff
 
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1tdc-globalcode
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETGabriel Schade Cardoso
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al....NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...Renato Groff
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...Renato Groff
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...Renato Groff
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Renato Groff
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Adam Victor Brandizzi
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Cross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumCross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumMaximiliano Alves
 

Semelhante a C# 7 novas features (20)

Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade....NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
Novidades do ASP.NET Core 2.1 - TDC 2018 - São PauloNovidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
 
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
Programação Funcional usando F#
Programação Funcional usando F#Programação Funcional usando F#
Programação Funcional usando F#
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
TDC2014 SP - C/C++ - Modularização de Código C
TDC2014 SP - C/C++ - Modularização de Código CTDC2014 SP - C/C++ - Modularização de Código C
TDC2014 SP - C/C++ - Modularização de Código C
 
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al....NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
 
Novidades do C#6
Novidades do C#6 Novidades do C#6
Novidades do C#6
 
Novidades do c#6
Novidades do c#6Novidades do c#6
Novidades do c#6
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Cross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumCross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appium
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadetdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucessotdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPAtdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinotdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicestdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publicatdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocustdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciatdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Servicetdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETtdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Coretdc-globalcode
 
TDC2018SP | Trilha BigData - Big Data Governance - Como estabelecer uma Gover...
TDC2018SP | Trilha BigData - Big Data Governance - Como estabelecer uma Gover...TDC2018SP | Trilha BigData - Big Data Governance - Como estabelecer uma Gover...
TDC2018SP | Trilha BigData - Big Data Governance - Como estabelecer uma Gover...tdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 
TDC2018SP | Trilha BigData - Big Data Governance - Como estabelecer uma Gover...
TDC2018SP | Trilha BigData - Big Data Governance - Como estabelecer uma Gover...TDC2018SP | Trilha BigData - Big Data Governance - Como estabelecer uma Gover...
TDC2018SP | Trilha BigData - Big Data Governance - Como estabelecer uma Gover...
 

Último

Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2Maria Teresa Thomaz
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoGentil Eronides
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholacleanelima11
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 

Último (20)

Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimento
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 

C# 7 novas features

  • 1. Globalcode – Open4educationGlobalcode – Open4education O que esperar do C# 7 Tania Raquel Stormovski de Andrade Software developer at Trinca
  • 2. Globalcode – Open4education Repositório da apresentação https://github.com/TeteStorm/TDC2016Presentation Contato email: tanstormandrade@gmail.com linkedin: https://br.linkedin.com/in/taniastormovski
  • 3. Globalcode – Open4education Objetivo da palestra O objetivo principal é apresentar brevemente algumas das novas features previstas para contemplar o C# 7 e que atualmente já estão “bem aceitas” que farão parte da nova release. Brevemente iremos abordar qual foi o intento de cada umas das versões do C# disponíveis até hoje e também comentar um pouquinho sobre o que guiou o pensamento da equipe de design do C# para chegar a essas features selecionadas.
  • 4. Globalcode – Open4education Agenda • C# 7 visão geral e status da versão • Ambiente de execução VS 15 Preview 4 e o novo Visual Studio Installer • Breve overview das versões do C# • Principais focos da nova versão da linguagem • Consumo de dados • Aumento de performance • Simplificação de código • Apresentando algumas novas features: • Pattern Matching • Tuples • Desconstruction • Local Functions • Ref return and Locals • Out var
  • 5. Globalcode – Open4education Futuro do C# A próxima versão da linguagem está sendo projetada com código aberto, os comentários e discussões dos membros da equipe e da comunidade. À medida que vão sendo testadas e validadas o time determina quais recursos devem ser adicionados à linguagem, o legal disso tudo é o acompanhamento real time que podemos ter da evolução das features, bem como as idéias que por alguma razão vão sendo abandonadas.
  • 6. Globalcode – Open4education Documento oficial do status da linguagem no github acessível em https://github.com/dotnet/roslyn/blob/master/docs/Language%20Feature%20Statu s.md
  • 7. Globalcode – Open4education Ambiente de execução Até antes do lançamento da release do Visual Studio 15 preview 4, que aconteceu dia 22 de agosto de agosto dependíamos de configurações adicionais, no caso símbolos de compilação condicionais, para testarmos as novas features propostas no C#. Agora com o advento da nova release grande parte das features finalizadas já estão disponíves sem precisarmos dos simbolos condicionais.
  • 8. Globalcode – Open4education VS 2015 Preview 4 - Nova experiência de instalação Como primeiro impacto nos deparamos com um nova experiência de instalação. É um proposta diferenciada das versões anteriores promete ser uma versão mais leve e otimizada.. Conforme a Microsoft a nova versão tem os seguintes principais propósitos: ● Reduzir o volume mínimo de memória do Visual Studio. ● Instalar mais rapidamente e com menos impacto no sistema, e desinstalar de forma limpa. ● Facilitar a seleção e instalação apenas dos recursos necessários.
  • 9. Globalcode – Open4education New Visual Studio Installer
  • 10. Globalcode – Open4education New Visual Studio Installer A instalação mais básica, que contempla somente o core editor para execução via shell tem 418 MB. Se adicionarmos o pacote básico para desktop completo a instalação pula para 1,02 GB. É possível e bem fácil selecionar itens adicionais e ver tudo que está sendo instalado
  • 11. Globalcode – Open4education Versões do C# As novas funcionalidades em cada versão do C #, até agora (com excepção do C # 6.0 talvez) giraram em torno de um tema específico: C # 2.0 introdução do generics. C # 3.0 habilitar o LINQ como extension method, expressões lambda, tipos anônimos (anonymous types) e outros recursos relacionados. C # 4.0 interoperabilidade com linguagens dinâmicas e não tipadas. C # 5.0 simplificar a programação assíncrona com advento do async e await. C # 6.0 teve o seu compilador completamente reescrito do zero e introduziu uma variedade de pequenos recursos e melhorias que ficaram mais fáceis de ser implementadas agora na versão 7..
  • 12. Globalcode – Open4education De acordo com o leader de design do C#, Mads Torgersen o foco das novas features adicionadas na versão são: “Data consumption, code simplification and performance.” Vamos ver brevemente o que guiou o time de design da linguagem nesse sentido:
  • 13. Globalcode – Open4education Consumo de dados Conforme a equipe de desenvolvimento da linguagem aqui se concentram as maiores features da nova versão do C#. Foi pensando na demanda cada vez maior do uso de serviços na web e na necessidade de facilitar o trabalho com interfaces de dados externos várias novas features foram desenvolvidas para ajudar nesse sentido como Pattern matching e Tuples, Descontruction.
  • 14. Globalcode – Open4education Performance Principalmente o aumento da participação de dispositivos móveis foi o que fez do desempenho uma consideração importante novamente. Existem recursos planejados para C # 7.0 que permitem otimizações de desempenho, que anteriormente não eram possíveis no framework .NET tais como Local functions, Ref Returns e Out var
  • 15. Globalcode – Open4education Simplificação do código Aqui entra uma evolução da versão anterior, com várias pequenas alterações adicionais construídas sobre o trabalho feito para C # 6.0 para permitir uma maior simplificação do código escrito como Binary Literals e Digit Separator.
  • 16. Globalcode – Open4education Pattern Matching C # 7.0 introduz a noção de padrões, que, abstratamente falando, são elementos sintáticos que pode testar se um valor tem uma certa "forma" ou padrão, e extrair informações a partir do valor. Neste momento, estão restritos a valores constantes, tipos e var .Pode ser utilizado de duas maneiras: utilizados em conjunto com o operador “is” e nos “case”s de uma declaração “switch. Pode ter restrições com when nos cases e vale lembrar no switch: a ordem importa, o default vai ser sempre avaliado por último e o null no final não é unreachable, pode ser tratado.
  • 17. Globalcode – Open4education Constant pattern public static void CalculateBodyFat(BodyFatSkinfoldProtocol bodyFatProtocol) { decimal bodyFat = 0; var bodyFatPercent = 0D; //Utilização do "is" // Constant pattern // Antes podíamos validar se o valor era nulo ou se o valor era de um determinado tipo // if (bodyFatProtocol == null) { ... } // if (bodyFatProtocol is BodyFatSkinfoldProtocol) { ... } // Agora podemos validar diretamente em constantes (ou números) if (bodyFatProtocol is null) throw new ArgumentNullException("Protocol must not be null"); }
  • 18. Globalcode – Open4education Type pattern public static void CalculateBodyFat(BodyFatSkinfoldProtocol bodyFatProtocol) { decimal bodyFat = 0; // Type pattern // Aqui além de testar o tipo extraímos o valor em uma nova variável do tipo proposto if (bodyFatProtocol is Guedes protocol) { //{ ... } bodyFat = protocol.Height; } else if (bodyFatProtocol is Faulkner protocol) { //{ ... } bodyFat = protocol.Height; } }
  • 19. Globalcode – Open4education Var pattern public static void CalculateBodyFat(BodyFatSkinfoldProtocol bodyFatProtocol) { decimal bodyFat = 0; // Var pattern // Aqui sempre vai dar match, a comparação simplemente coloca o valor obtido //numa nova variável que será do tipo do input if (bodyFatPercent is var bf) { Console.WriteLine(bf); } }
  • 20. Globalcode – Open4education Tuples e Descontruction Para utilizarmos ambos recursos é necessário instalarmos o pacote do nuget System.ValueTuple
  • 21. Globalcode – Open4education Tuples e Descontruction O novo conceito de Tupla inserido no C# 7 não tem a ver com o atual tipo tupla que se trata de um reference type, e claro vamos querer evitar usá-lo em códigos onde desempenho seja imprescindível. Se tratando de um tipo imutável qualquer mudança vai exigir que realoquemos um novo objeto. O C# 7 oferece um novo tipo de tupla como valuer type, mutável e mais eficiente em termos de performance. A ideia básica é permitir declarar tipos como uma tupla para que uma declaração possa conter mais de um valor e, de forma semelhante, os métodos possam retornar mais de um valor. O caso mais comum é para permitir múltiplos valores de retorno de uma função sem precisar de parâmetros “out “(tuple types). Mas também teremos literais de tuplas (tuple literals), permitindo criar uma variável tipada como uma tupla.
  • 22. Globalcode – Open4education Tuples // Retorna 3 valores dentro de um elemento tupla que podem ser acessados atráves das propriedades Item1, Item2, Item3 static (decimal, decimal, string) GetProtocolValues(BodyFatSkinfoldProtocol bodyFatProtocol) { return (bodyFatProtocol.Weight, bodyFatProtocol.BodyFatPercent, bodyFatProtocol.ProtocolName); } // Retorna 3 valores dentro de um elemento tupla mas de maneira nomeada com variáveis explícitas // que poderão ser acessadas atráves dos nomes das propriedades static (decimal Weight, decimal TotalBodyFat, string Protocol) GetNamedProtocolValues(BodyFatSkinfoldProtocol bodyFatProtocol) { var returnValues = (bodyFatProtocol.Weight, bodyFatProtocol.BodyFatPercent, bodyFatProtocol.ProtocolName); return returnValues; }
  • 23. Globalcode – Open4education Descontruction Outra maneira de consumir tuplas é utilizando o conceito de deconstruct, nada mais é do que uma sintaxe para dividir uma tupla (ou outro objeto, não é uma funcionalidade exclusiva para o uso com tuplas) em suas partes e atribuir as partes individualmente para variáveis.
  • 24. Globalcode – Open4education Descontruction public static void Deconstruct(this BodyFatSkinfoldProtocol bodyFatProtocol, out string protocolName, out string formuleDescription) { protocolName = bodyFatProtocol.ProtocolName; formuleDescription = bodyFatProtocol.FormuleDescription; } // Automaticamente chama o método ou extension method Desconstruct implementado no objeto public static void PrintDesconstruction() { var guedes = new Guedes() { Height = 167, Weight = 58 }; (var name, var description) = guedes; //calls method Deconstruct Console.WriteLine($"Protocol name: {name}"); Console.WriteLine($"Protocol description: {description}"); string x; guedes.Deconstruct(out x); Console.WriteLine($"Protocol and description: {x}"); }
  • 25. Globalcode – Open4education Local functions Permite a declaração de funções auxiliares aninhados dentro de outras funções. Isto não só irá reduzir o seu escopo, mas também permite o uso de variáveis ​​declaradas em no escopo principal, sem alocar memória adicional na pilha.
  • 26. Globalcode – Open4education public void CalculateBodyFatMass(decimal weight, decimal height) { if (weight <= 0) throw new NullReferenceException("weight cannot be null"); if (height <= 0) throw new NullReferenceException("height cannot be null"); void CalculateBodyFat() { this.TotalBodyFat = weight + (height * height) /2; } CalculateBodyFat(); } }
  • 27. Globalcode – Open4education Ref Returns and locals Esta proposta adiciona suporte em C # para devolver valores a partir de métodos de referência. Além disso, as variáveis locais podem ser declaradas como variáveis "ref". Um método poderia retornar uma referência para uma estrutura de dados interna em vez de retornar uma cópia do valor.
  • 28. Globalcode – Open4education Ref Returns and locals public class BodyWeight { public BodyWeight(int currentWeight) { _weight = currentWeight; } private int _weight = 0; public ref int GetWeight() { return ref _weight; } }
  • 29. Globalcode – Open4education Ref Returns and locals BodyWeight myWeight = new BodyWeight(58); // Mostra valor atual e incrementa 2kg usando a maneira padrão de incrementar // que é método Increment Console.WriteLine("Current weight value: "); Console.WriteLine(myWeight.GetWeightValue()); Console.WriteLine("Increment 2 kilogramans using the public method Increment"); myWeight.Increment(2); Console.WriteLine("Current weight value after increment: "); Console.WriteLine(myWeight.GetWeightValue()); // Pega a propriedade disponibilizada por referência // e modifica diretamente a propriedade interna do objeto ref int teste = ref myWeight.GetWeight(); // incrementa em 1 kg utilizando diretamente a prop weight obtida através do método ref int GetWeight(); teste++; Console.WriteLine("Current weight value after external increment: "); Console.WriteLine(myWeight.GetWeightValue()); Console.ReadKey();
  • 30. Globalcode – Open4education Out var Remove a necessidade de variáveis out serem pré declaradas e também permite o uso de var para declarar o tipo da variável que será inferido pelo compilador (não funciona em casos onde o compilador não consegue inferir a tipagem por causa de algum overload)
  • 31. Globalcode – Open4education Out var // Deconstruct in new Out mode public static bool DesconstructionInOutVariables(out string name, out string description) { var guedes = new Guedes() { Height = 167, Weight = 58 }; (name, description) = guedes; //calls method Deconstruct return true; } Chamada: //Como ainda existe restrição de escopo para conseguir acessar as variávies precisamos criar um para poder acessá-las if(DesconstructionInOutVariables(out string name, out string description)) { Console.WriteLine($"Protocol name: {name}"); Console.WriteLine($"Protocol description: {description}"); }
  • 32. Globalcode – Open4education Out var // Out Var public static void PrintOutVars(string weight) { if (int.TryParse(weight, out var intWeight)) { Console.WriteLine(new string('*', intWeight)); } }