Arquitetura no Android, realmente importa? - TDC 2011

  • Published on
    29-Jun-2015

  • View
    959

  • Download
    0

DESCRIPTION

Presentation made in 2011 about Development Patterns in Android at The Developer's Conference 2011.

Transcript

  • 1. Desenvolvendo para AndroidDividindo responsabilidades da melhor forma

2. About Me Marcos Paulo Damasceno Software Developer @NavitaTecnologiaFormado em Desenvolvimento de Software pelo IFCECearense de lngua presa, amante de msica,do trabalho e das pessoas. 3. Quero desenvolver para android o/Activity GPS Context Intents Services JavaGeolocalizao ListViewAdapters Ciclo de Vida Android ManifestNetworkContent Provider 4. Oi, como vai a sua arquitetura?Motivaes Problemas pra diminuir o acoplamento entre tela e regras de negcio. Activities estavam cando megazords.Adapters estavam fazendo muitas formataes devalores pra exibir na tela, que no eram aproveitveis.Cdigo difcil e chato de testarAplicao frgilFalta de padro bemdenido na comunidade. 5. Ento o que devo utilizar?Simples, vou usar o MVC, claro.MVC pros fracos, eu sou Hippie, vou usar MVP 6. MVCOnde est o Controller? 7. bvio meu caroActivities soos controllers 8. ControllerO controlador (controller) recebe a entrada de dados e inicia a resposta ao utilizadorao invocar objetos do modelo, e por m uma visobaseada na entrada. Ele tambm responsvel pelavalidao e ltragem da entrada de dados. Wikipedia 9. Mas, ser que realmente devemosconsiderar activities controllers? 10. Responsabilidades das Activities Capturar os componentes doxml e colocar em objetos.Certas responsabilidade decriao de tela, como porexemplo criao OptionsMenu, ContextMenu e etc.Responsabilidades de troca detela e chamada de intents. 11. ....Sim, tudo bem se voc trabalha com sua activity como se ele fosse um controller nico.Mas sua activity pode acabar assim. 12. Se voc acha que ter mais de 300 linhas de cdigo nasua activity normal e aceitvel. Voc tem probleminha.... 13. Brincadeira... no regra.... Sabemos quequantidade no qualidade...Em nada desse mundo...seja pra mais ou seja pra menos.... 14. Mas se podemos dividir responsabilidades e melhorar o nosso cdigo, devemos faz-lo. Pra isso, criamos mais uma camada,entre a nossa regra de negcio, e asactivities.... camada que chamaremosde.... Controllers. 15. ActivitiesDevem acessar os objetos do xml. NoonCreate instanciar o controller. E noslisteners chamar mtodos especcos do controller. Controller Deve chamar as regras de negcio, obter a resposta e transformar ela em ViewObjects para retorn-los para as activities.ViewObjects Responsvel por conter os dados como devem ser exibidos em tela, j tratados.Criado de acordo com componentes. 16. View Objects??? WTF O.o 17. Imagine a seguinte situao: Aplicativo de monitoramento de ligaes e planos de voz. Com a seguinte tela.Ao carregar o aplicativo, um ListViewaparece e mostra minutos utilizados e a porcentagem de utilizao 18. O que fariamos normalmente? Show me the code 19. O problema dessa abordagem que: Se por acaso um dia mudarmos aforma como os dados so enviados, devemos modicar a lgica do Adapter.Veja que o adapter cou cheio de lgica desnecessria e ele est bemacoplado. 20. Usando View Objects Show me the code 21. AnalisandoA ideia que o VO tenha mais do que dados, mastambm parmetros como cores do progress barde acordo com a porcentagem utilizado.Dessa forma nosso Adapter tem a nica responsabilidade de setar os dados nos componentes da row. A lgica de exibio ca toda centralizada. Se algo mudar no modelo que vem do server, nosso adapter continua intacto. 22. Veja que...Claro que isso no regra, se sua listview temdiferentes rows de acordo com dados a seremexibidos inevitavelmente ela ter alguma lgica.Dependendo do projeto criar view objects pode ser trabalhoso e demorado, tem que analisar bemtudo e trabalhar da melhor forma possvel.Tambm vlido criar uma Activity abstrata pra obrigarimplementao de mtodos para atachar os componentes de xml com suas respectivas Actions e tambm para carregar os componentes do XML. Oumesmo para manter cdigos reaprovetveis como funcionamento da action bar. 23. Arre gua, qual o objetivo da palestra ento? dizer sim, a arquitetura do projeto importa, no porque um projeto para um dispositivo mvel que deve ser desenvolvido como vem na telha.Estratgias devem ser analisadas, design patternsdevem ser utilizados.Com o sucesso dos tablets a qualquer momento voc pode precisar pegar aquela sua aplicao prasmartphone e ter que torn-la universal para tablets.E a Jos? O que voc vai fazer? Criar um novoprojeto s pra tablets e copiar e colar cdigosreaprovetveis?Refatorar o cdigo que t todo amarrado? 24. Desenvolver Software Mobile coisa sria!!!!Vamos abrir nossa mentes e fazer apps pra android com qualidade ;) 25. Lets Talk NowDoubts? Questions? Opnions?Do you disagree with me? Its ur turn. Talk!!