A componentização de software pode ser descrita como uma unidade de software que pode ser unida a outras unidades de software para formar um sistema de maior tamanho.
Depois dessa breve descrição sobre o que é um componente, vamos a pergunta… Por que eu devo componentizar minha aplicação iOS?
Vou dar um exemplo de um problema que estava enfrentando(e aproveitar para fazer o marketing do aplicativo), eu estava desenvolvendo uma feature de BottomSheet para o meu projeto só que eu fiz isso sem modularizar, fiz isso em 3 fluxos do app. Depois de um tempo eu percebi que tinha um detalhe que não estava me agradando na animação de dimiss do meu BottomSheet. Resultado? Tive que entrar em classe por classe e fazer a correção.
Desse dia em diante, tentei minimizar essas coisas o máximo possível para evitar futuros retrabalhos. Vamos à componetização de sua aplicação iOS.
Soluções:
∙ Criar classes independentes
O jeito mais fácil mas o mais sem graça também, é só fazer classes independentes.
∙ Criar uma target
No meu projeto do +Sangue eu criei uma nova target chamada +SangueUI, essa camada/target é responsável por conter tudo relacionado a User Interface. Em um projeto você pode ter várias targets, cada uma com sua responsabilidade. Por exemplo eu posso criar uma target chamada +SangueCore que ficaria responsável por conter toda minha lógica de negócio.
Toda vez que eu vou utilizar o +SangueUI sou obrigado a dar um import nele, e todas as funções que eu quero enxergar precisam ser públicas.
import +SangueUI
∙ Criar um framework
Você pode optar por trabalhar com a criação de uma framework, mas eu só recomendaria isso caso seja utilizado em mais de um projeto, porque cada alteração será necessário fazer uma release do seu Pod.
BRQBottomSheet
Em parceiria com a BRQ eu transformei meu componente de BottomSheet do +SangueUI em uma framework onde é possível ser utilizado em qualquer projeto.