SlideShare a Scribd company logo
1 of 8
Boas Práticas com Xamarin Forms
#ifoodFriends
It´s-a me Bertuzzi
• Thiago Bertuzzi é desenvolvedor .net há 12 anos participando
de projetos Desktop, Services, Web e Mobile utilizando
Xamarin.
• É Microsoft MVP em Developer Technologies
• É Líder técnico na NESS
• Contribui para comunidade Xamarin escrevendo artigos,
compartilhando códigos, palestrando e criando pacotes Nuget.
Compartilho a Interface , mas não compartilho
as Guidelines
• Não é porque Xamarin.Forms te criar uma Tela para iOS e Android,
que eu não devo respeitar as Guidelines.
Vamos Abrir e utilizar nosso APP
• Mantenha o mínimo de dependências possíveis.
• Se precisar baixar muitos dados, utilize o background.
• Lazy Loading, carregue o que precisa sob demanda.
• Não espere dados carregarem para você atualizar sua tela, ninguém
gosta de ver uma tela congelada.
• Utilize só os Plugins e Controles de terceiro se necessário ;) .
• Utilize o Linker, sempre...
• MessagingCenter só em ultimo caso, para casos de BackGround, ou se
ameaçarem sua família. Utilize se possivel um framework que resolva
isso.
Xaml -> Boas Praticas
• Habilite Layout Compression nos layouts que aceitam. Mas verifique
antes.. (Se possui entradas de toque por exemplo )
• Não utilize bindings desnecessários ..
Title por exemplo, pra que ?
• Não utilizar os valores Default, por exemplo
se é grid.row = 0 pra que declarar ? (Evite recriação da tela )
• Utilize dispose sempre que possível Mobile não tem memoria infinita.
• Se assinar um Evento, então devemos desassinar (unsubscribe)
Xaml -> Boas Praticas
• Não utilize StackLayout para um controle apenas
• Reduza o carregamento de controles , nada de stacklayout dentro de
outro stacklayout
• Utilize mais Grids menos stacklayouts e principalmente
RelativeLayout :) , se você precisa de um Grid porque usa stacklayout?
• Não coloque Stacklayout nem ListView dentro de uma scrollview
Xaml -> Label e ListView
• Não utilize vários Labels, geralmente um Span com FormattedText
resolve seu problema.
• Utilize Estrategia de Cache no listview
• RecycleElement por padrão
• Utilize HasUnevenRows sempre que
precisar de linhas com tamanhos diferentes
• Não utilize TableView no Lugar de ListView, TableView é mais para
Layout de Settings
Obrigado / Duvidas?
• “Toda vez que alguém fala “Chamarin”,Deus mata um panda”
• Referencias : https://kent-boogaart.com/blog/jason-smith%27s-xamarin-
forms-performance-tips
• twitter.com/tbertuzzi
• github.com/tbertuzzi
• nuget.org/profiles/Bertuzzi
• medium.com/@bertuzzi
• bertuzzi.dev

More Related Content

Similar to Boas Práticas com Xamarin Forms 

Polis Hyperlink Dicas e truques de Performance para JPA e EJB
Polis Hyperlink Dicas e truques de Performance para JPA e EJBPolis Hyperlink Dicas e truques de Performance para JPA e EJB
Polis Hyperlink Dicas e truques de Performance para JPA e EJB
Danival Calegari
 

Similar to Boas Práticas com Xamarin Forms  (20)

Melhores praticas no desenvolvimento magento
Melhores praticas no desenvolvimento magentoMelhores praticas no desenvolvimento magento
Melhores praticas no desenvolvimento magento
 
Melhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM ConnectionsMelhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM Connections
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudar
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º Latinoware
 
Acelerando o caminho para nuvem com serverless e java
Acelerando o caminho para nuvem com serverless e javaAcelerando o caminho para nuvem com serverless e java
Acelerando o caminho para nuvem com serverless e java
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front End
 
Magento Gerencimento e Customização de Temas
Magento Gerencimento e Customização de TemasMagento Gerencimento e Customização de Temas
Magento Gerencimento e Customização de Temas
 
Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023
 
Xamarin.Forms: estes pacotes vão salvar sua vida
Xamarin.Forms: estes pacotes vão salvar sua vidaXamarin.Forms: estes pacotes vão salvar sua vida
Xamarin.Forms: estes pacotes vão salvar sua vida
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São Paulo
 
Simple singleton pattern
Simple singleton patternSimple singleton pattern
Simple singleton pattern
 
Domain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaDomain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da Caixa
 
O que você precisa saber para se tornar um dev front-end
O que você precisa saber para se tornar um dev front-endO que você precisa saber para se tornar um dev front-end
O que você precisa saber para se tornar um dev front-end
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
Fazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da porta
 
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
 
Polis Hyperlink Dicas e truques de Performance para JPA e EJB
Polis Hyperlink Dicas e truques de Performance para JPA e EJBPolis Hyperlink Dicas e truques de Performance para JPA e EJB
Polis Hyperlink Dicas e truques de Performance para JPA e EJB
 
Db2
Db2Db2
Db2
 

More from Thiago Bertuzzi

More from Thiago Bertuzzi (20)

Secure Coding with OWASP & SSDLC.pptx
Secure Coding with OWASP & SSDLC.pptxSecure Coding with OWASP & SSDLC.pptx
Secure Coding with OWASP & SSDLC.pptx
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de Unidade
 
Código Seguro
Código SeguroCódigo Seguro
Código Seguro
 
MAUI + .NET 6: principais novidades
MAUI + .NET 6: principais novidadesMAUI + .NET 6: principais novidades
MAUI + .NET 6: principais novidades
 
Criando Apps com .net: o Poder do Xamarin.Forms
Criando Apps com .net: o Poder do Xamarin.FormsCriando Apps com .net: o Poder do Xamarin.Forms
Criando Apps com .net: o Poder do Xamarin.Forms
 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
 
Do Azure Devops ao Github Actions, Caso Real
Do Azure Devops ao Github Actions, Caso RealDo Azure Devops ao Github Actions, Caso Real
Do Azure Devops ao Github Actions, Caso Real
 
Plugins e Controles para Xamarin.Forms Canal.net DevWeek
Plugins e Controles para Xamarin.Forms Canal.net DevWeekPlugins e Controles para Xamarin.Forms Canal.net DevWeek
Plugins e Controles para Xamarin.Forms Canal.net DevWeek
 
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
 
4 Apps que todo Desenvolvedor Xamarin deveria fazer
4 Apps que todo Desenvolvedor Xamarin deveria fazer4 Apps que todo Desenvolvedor Xamarin deveria fazer
4 Apps que todo Desenvolvedor Xamarin deveria fazer
 
Novidades de Xamarin e Visual Studio for Mac no .Net Conf
 Novidades de Xamarin e Visual Studio for Mac no .Net Conf Novidades de Xamarin e Visual Studio for Mac no .Net Conf
Novidades de Xamarin e Visual Studio for Mac no .Net Conf
 
Persistência e Bancos de Dados com Xamarin.Forms
Persistência e Bancos de Dados com Xamarin.FormsPersistência e Bancos de Dados com Xamarin.Forms
Persistência e Bancos de Dados com Xamarin.Forms
 
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
 
Armazenando Dados com Xamarin
Armazenando Dados com XamarinArmazenando Dados com Xamarin
Armazenando Dados com Xamarin
 
Xamarin.Forms : O Poder do XAML, criando interfaces incríveis
Xamarin.Forms : O Poder do XAML, criando interfaces incríveisXamarin.Forms : O Poder do XAML, criando interfaces incríveis
Xamarin.Forms : O Poder do XAML, criando interfaces incríveis
 
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
 
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
 
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For MacNovidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
 
Boas praticas com Prism
Boas praticas com PrismBoas praticas com Prism
Boas praticas com Prism
 
Porque Xamarin.Forms é Incrivel - MVPConfLatam2019
Porque Xamarin.Forms é Incrivel - MVPConfLatam2019Porque Xamarin.Forms é Incrivel - MVPConfLatam2019
Porque Xamarin.Forms é Incrivel - MVPConfLatam2019
 

Recently uploaded

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Recently uploaded (11)

ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 

Boas Práticas com Xamarin Forms 

  • 1. Boas Práticas com Xamarin Forms #ifoodFriends
  • 2. It´s-a me Bertuzzi • Thiago Bertuzzi é desenvolvedor .net há 12 anos participando de projetos Desktop, Services, Web e Mobile utilizando Xamarin. • É Microsoft MVP em Developer Technologies • É Líder técnico na NESS • Contribui para comunidade Xamarin escrevendo artigos, compartilhando códigos, palestrando e criando pacotes Nuget.
  • 3. Compartilho a Interface , mas não compartilho as Guidelines • Não é porque Xamarin.Forms te criar uma Tela para iOS e Android, que eu não devo respeitar as Guidelines.
  • 4. Vamos Abrir e utilizar nosso APP • Mantenha o mínimo de dependências possíveis. • Se precisar baixar muitos dados, utilize o background. • Lazy Loading, carregue o que precisa sob demanda. • Não espere dados carregarem para você atualizar sua tela, ninguém gosta de ver uma tela congelada. • Utilize só os Plugins e Controles de terceiro se necessário ;) . • Utilize o Linker, sempre... • MessagingCenter só em ultimo caso, para casos de BackGround, ou se ameaçarem sua família. Utilize se possivel um framework que resolva isso.
  • 5. Xaml -> Boas Praticas • Habilite Layout Compression nos layouts que aceitam. Mas verifique antes.. (Se possui entradas de toque por exemplo ) • Não utilize bindings desnecessários .. Title por exemplo, pra que ? • Não utilizar os valores Default, por exemplo se é grid.row = 0 pra que declarar ? (Evite recriação da tela ) • Utilize dispose sempre que possível Mobile não tem memoria infinita. • Se assinar um Evento, então devemos desassinar (unsubscribe)
  • 6. Xaml -> Boas Praticas • Não utilize StackLayout para um controle apenas • Reduza o carregamento de controles , nada de stacklayout dentro de outro stacklayout • Utilize mais Grids menos stacklayouts e principalmente RelativeLayout :) , se você precisa de um Grid porque usa stacklayout? • Não coloque Stacklayout nem ListView dentro de uma scrollview
  • 7. Xaml -> Label e ListView • Não utilize vários Labels, geralmente um Span com FormattedText resolve seu problema. • Utilize Estrategia de Cache no listview • RecycleElement por padrão • Utilize HasUnevenRows sempre que precisar de linhas com tamanhos diferentes • Não utilize TableView no Lugar de ListView, TableView é mais para Layout de Settings
  • 8. Obrigado / Duvidas? • “Toda vez que alguém fala “Chamarin”,Deus mata um panda” • Referencias : https://kent-boogaart.com/blog/jason-smith%27s-xamarin- forms-performance-tips • twitter.com/tbertuzzi • github.com/tbertuzzi • nuget.org/profiles/Bertuzzi • medium.com/@bertuzzi • bertuzzi.dev