Se você, como eu, é um (quase) fiel seguidor de metodologias ágeis de desenvolvimento, certamente conhece o termo “otimização prematura“. Em poucas palavras, trata-se de evitar o zelo em excesso com otimizações no código e algoritmos num estágio inicial do desenvolvimento da sua aplicação. O melhor é gastar seu precioso tempo na construção das funcionalidades e fazer logo o deploy da sua aplicação do que tentar ganhar alguns milisegundos naquele método que uma vez por mês é utilizado…
Claro que, como dizia minha avó, “nem tanto ao céu, nem tanto à terra”. Um requisito do seu projeto pode ser “atender 1.000.000 de requisições por segundo”. Encontrar o ponto ótimo requer muita experiência, maturidade e habilidade do desenvolvedor. O problema é que, às vezes, quanto mais experiência, quanto mais ninja é desenvolvedor, mais ele se gaba de conhecer aquele macete, aquele truque, aquela técnica garimpada num fórum da internet ou num livro que só ele leu, para o código ficar melhor. E realmente fica, mas às custas de um esforço que, efetivamente, não produziu uma única funcionalidade nova. Não atendeu a um dos requisitos que o cliente do projeto especificou.
Ok, eu gosto dessa filosofia, você também concorda que é mais lógico (se você tem seu cliente em foco!) mas… Esqueça isso! Para não dizer que sou radical, pelo menos leve-a bem menos a sério quando estive desenvolvendo para o iPhone. Ou qualquer outra plataforma móvel.
Por mais avançados que sejam, os dispositivos móveis ainda estão longe de ter a capacidade dos computadores de mesa. Os recursos disponíveis são muito mais limitados. A memória disponível, o tamanho da tela, a bateria que se esgota… Tudo é mais escasso. “Mas”, você vai dizer, “um iPhone tem um processador melhor que o dos computadores de uma década atrás, tem muito mais memória também!” Só que os aplicativos que queremos executar nele também não se comparam ao dos anos 80. Internet, música, vídeo, jogos 3D, Google Maps (
)… Na verdade é quase espantoso como ele consegue fazer isso tudo. rs rs
Você não conseguiria fazer isso nos anos 80. E isso tudo gasta memória. Gasta processamento. E gasta bateria, muita bateria!
E cuidado para não ter conceitos equivocados. “Um iPhone mais básico tem 8GB de memória! Isso dá e sobra pra minha super-aplicação processadora de texto, planilha, browser da internet e cálculo da trajetória do ônibus espacial na versão paga”. Na verdade, a RAM disponível para os aplicativos tem “apenas” 128MB, e isto é compartilhado com o sistema e vídeo. Sobra uns 64MB para seu aplicativo. Não é pouco, mas talvez você tenha que colocar o cálculo da NASA em outra aplicação. (Lembre-se que, atualmente, o iPhone executa somente uma aplicação por vez, salvo algumas exceções)
Então, mude seu mindset quando estiver desenvolvendo para dispositivos móveis. Pense em otimização desde a primeira linha de código que escrever, num nível muito maior do que quando você escreve aplicações para desktop ou para a web. Novamente, bom senso e caldo de galinha nunca fizeram mal a ninguém.
Pretendo explorar mais esse assunto nos próximos posts. Existem várias dicas, técnicas e detalhes que precisamos lembrar e que, normalmente, não são nossa preocupação quando escrevemos aplicações tradicionais (ainda dá para chamar assim?
).
E não se preocupe! Desenvolver para o iPhone não vai ficar menos legal por causa disso. Ao contrário, para você que adora aprender, vai ser um prato cheio.