Post on 17-Jul-2015
"Como você faz?"Cocoaheads RJ - Douglas Fischer
Objetivo do Cocoaheads
• Multiplicar conhecimento.
• Dividir experiências.
• Networking.
“Como você faz isso?"• Mediador apresenta alguns tópicos relacionados ao
desenvolvimento Apple.
• Mediador fala como costuma realizar o trabalho e apresenta algumas vantagens e desvantagens básicas.
• Participantes dizem como realizam o trabalho em seus projetos.
• Todos discutem outras vantagens e desvantagens de cada abordagem.
Criação de User Interface
Alternativas:- Por código
- Por .xibs e .nibs
- Storyboard
O que eu uso: Código!
• Toda UI em um local.
• Manutenção mais rápida.
• Maior controle / custom views.
• Reduz problemas de Merge para equipes.
O que eu uso: Código!
• Mais demorado para ter algo apresentável.
• Exige trabalho de um desenvolvedor.
• Não oferece um feedback imediato da situação atual.
• Com diferentes tamanhos de tela, perde vantagem.
Persistência de Dados
Alternativas principais:- CoreData
- SQLite
- Realm
O que eu uso: CoreData
• Rápido para ter algo funcional.
• Definição de classes de forma visual.
• Faulting automático (fetch por demanda).
• Alto nível.
O que eu uso: CoreData
• Muitos problemas com concorrência.
• Performance questionável com muitos dados.
• Verboso para configuração dos fetches.
• Realm parece ser a melhor opção.
WebServices
Alternativas principais:- REST vs SOAP
- Serviços separados para cada necessidade.
- Serviço único com todos os dados.
O que eu uso: Serviço unificado• Login / Sync de recebimento / Upload
• Dados disponíveis para modo offline.
• Lento em rede móvel.
• Tráfego desnecessário.
• REST
Estrutura dos ProjetosAlternativas principais:- Grupos por MVC.
- Grupos por Tela.
- Grupos por especialidades.
- Grupos ou Folders?
O que eu uso: Depende do app
• Grupos ao invés de Folders.
• Grupo para frameworks de terceiros.
• CocoaPods é o ideal.
• xcworkspace / xcodeproj
Testes de qualidade do appAlternativas principais:- Teste manual
- Teste automatizado
- Casos de uso
- Checklist
O que eu uso: Teste manual
• Interno.
• Repetitivo / Custoso.
• Imprevisível.
• Sujeito a falhas.
O que eu uso: Teste manual
• Testes automatizados liberam a equipe para outras atividades.
• Teste de UI com ferramentas como KIF.
• Teste automatizado nunca é esquecido.
• Pode gerar material de marketing para o app.
Geração de BuildsAlternativas principais:- Manual pelo Xcode
- Automatizado pelo Xcode Bots
- Automatizado pelo Jenkins / Hudson
- Cloud hosted (Travis CI, Circle CI, Bamboo, Ship.io, etc)
O que eu uso: Ship.io• Setup local é muito trabalhoso.
• Manutenção é complexa.
• Atualizado a cada 30 minutos.
• Enviado por email para todas pessoas do projeto.
• Xcode Bots possui maior integração com dev.
• Analytics de uso do app (Flurry, Google Analytics)
• Ferramenta para análise de crashes (Crittercism, Crashlytics)
• Input de dados em células (setter do model, category, etc)
• Disponibilidade offline.
Outros assuntos?
Contato
• Douglas Fischer
• Abacomm (www.abacomm.com.br)
• Twitter (@DougDiskin)
• GitHub (@DougFischer)