Xib, UIStoryboard e View code, quando usar?
Com certeza, assim como eu, você também ja ouviu, ou se perguntou, o que usar para desenvolver a interface de usuário no seu aplicativo.
Porem, antes de começar, caso você esteja começando agora no mundo iOS e caiu aqui nesse post, vou explicar de forma rápida o que é cada um deles, antes de entrar nos tópicos de quando usar.
O que é XIB?
XIB ou UINib, para efeitos de comparação, eles são a mesma coisa, uma visualização personalizada que pode ser reutilizada em todo o seu projeto.
O .XIB (XML Interface Builder) são convertidos em NIB (NeXTSTEP Interface Builder) durante o tempo de compilação, porque o XIB são mais fáceis de ler para nós humanos, enquanto o NIB são mais fáceis de ler para o computador.
O XIB é uma visualização personalizada e reutilizável, assim como no Storyboard, você pode arrastar elementos visuais para dentro da sua interface, como botões, labels, tables, etc. Alem de adicionar os elementos na tela, você pode/deve indicar como será o posicionamento dele na interface, utilizando auto layout ou constraints.
O que é UIStoryboard?
O UIStoryboard foi introduzido no iOS 5, alem de ter todas as vantagens do XIB, eles são usados principalmente para navegação e layout. A ideia principal do Storyboard é você prototipar sua ideia ou conceito de aplicativo, sem escrever nenhuma linha de código (você pode ver um exemplo nesse video que postei no meu canal 🤓)
O que é View code?
O View code nada mais é que criar toda a interface do usuário programaticamente. Simples não? 😁.
Agora que sabemos, o que são cada um deles, vamos ao ponto principal desse artigo, quando usar?
Para você que esta começando a criar seus aplicativos iOS sozinho, o Storyboard é uma excelente escolha para criar interfaces de forma rápida, e em poucas horas, você tem um protótipo totalmente navegável. Porém a medida que o seu projeto vai avançando, o ideal é você mesclar o uso do Storyboard com o Xib, já que com o Xib, você consegue ter um maior reaproveitamento da interfaces (UITableViewCell, UICollectionViewCell, etc).
Mas a medida que o projeto cresce, o nível de dificuldade em adicionar ou modificar views aumenta, tornando muito trabalhoso fazer pequenas mudanças na interface, outro problema comum é a dificuldade em trabalhar com controle de versão (como Git), quando se tem vários desenvolvedores trabalhando juntos, essas modificações nos mesmos arquivos, acaba gerando conflitos de versão, e por ultimo, mas não menos importante, o XIB ou Storyboard diminui muito a legibilidade do código na hora de fazer um code review, uma pratica muito utiliza nas grandes empresas.
O View code trás uma serie de benefícios sobre as duas abordagens anteriores, com o view code, podemos reutilizar os mesmos componentes em diferentes situações, controlar melhor seu fluxo de inicialização, alem de realizar merge entre branches mais facilmente, pois mesmo que tenhamos conflito, eles são mais fáceis de ler e resolver, porem nem tudo são flores.
Trabalhar com View code trás uma curva de aprendizado maior, se não tivermos o conhecimento adequado na construção de views, o nível de complexidade pode ir aumentando de forma desnecessária, alem disso, o tempo para criar novos layouts é mais demorado, pois não temos o feedback visual e rápido do interface builder, e você precisa compilar sempre seu aplicativo para ver as mudanças.
Antes de concluir, outro ponto (porem esse é mais avançando), existe diferenças no tempo de compilação, já que o XIB precisa transcrever para UINib e compilar cada arquivo, a medida que seu projeto cresce o números de componentes em XIB vai aumentar proporcionalmente e com isso seu tempo de compilação será maior. O Storyboard ele pode diminuir um pouco esse trabalho já que toda a interface pode se concentrar em um mesmo arquivo, porem utilizando essa abordagem, carregar toda interface, gera uma sobre carga no seu tempo de desenvolvimento, para diminuir isso problema você pode quebrar em mais Storyboard e separar as jornadas, porem teremos impactos parecidos no tempo de compilação, já o View code são arquivos objc ou swift e com o passar dos anos a Apple vem melhorando o tempo de compilação desses arquivos.
Conclusão
Na minha opinião, acho muito válido para você que está aprendendo, começar pelo XIB ou Storyboard, porem se você ja tem um pouco mais de experiência e sonha um dia em entrar em uma grande empresa, view code é utilizado em quase todas ou todas as empresas nacionais e internacionais.
Se você quiser ver mais sobre essas 3 técnicas, tem o vídeo no meu canal do Comitando