Aprimorando o desenvolvimento para iOS - Revista Mobile Magazine 46
Neste artigo vamos tratar de algumas técnicas e padrões de programação em Objective-C para iOS que prometem tornar o seu código mais simples e elegante.
Aprimorando o desenvolvimento para iOS
Neste artigo vamos tratar de algumas técnicas e padrões de programação em Objective-C para iOS que prometem tornar o seu código mais simples e elegante. Usando os novos e modernos recursos do Objective-C como os blocks, é possível sair do padrão e criar soluções que resultam num código mais limpo e elegante.
Em seu dia-a-dia o desenvolvedor precisa resolver diversos problemas de programação que geralmente requerem soluções um tanto envolventes. Existem diversas maneiras de resolver esses problemas, cada uma com seus prós e contras. Muitas dessas possibilidades não são óbvias à primeira vista, porém uma destas pode ser a solução mais apropriada para o caso. Portanto, é interessante sempre conhecer novas técnicas para aumentar o nosso arsenal de soluções que utilizamos todos os dias para atacar os problemas.
A linguagem Objective-C tem ganhado bastante popularidade recentemente devido ao grande sucesso dos iDevices (iPad, iPhone). Com isso, novos recursos são constantemente adicionados à linguagem e novos padrões de programação são criados pelos próprios desenvolvedores.
Esses padrões trazem novas possibilidades que permitem criar uma determinada funcionalidade escrevendo menos código, as vezes tornando o mesmo muito mais simples de manipular e entender. Porém, muitas dessas técnicas não são apresentadas na documentação oficial, nem mesmo em livros e nos tutoriais que encontramos pela internet. Apenas aprendemos algumas delas através da experiência e da curiosidade, onde sempre tentamos fazer algo de forma diferente com o objetivo de sair do caminho convencional.
A seguir são apresentados alguns padrões e técnicas que podem beneficiar a estrutura do código, reduzindo seu tamanho e complexidade, e tornando sua manutenção mais simples.
Objeto imutável é um objeto que não pode ter seu estado alterado após ter sido criado. No Cocoa nós temos algumas classes que possuem versões mutáveis e imutáveis, por exemplo, NSMutableArray e NSArray. O NSArray apenas pode ser criado contendo um conjunto fixo de objetos e em seguida somente pode ser consultado. Somente com o NSMutableArray conseguimos adicionar, remover e substituir elementos no array. Objetos imutáveis trazem diversos benefícios que podem não ser aparentes a princípio.
Quando um objeto é imutável, podemos assumir em qualquer ponto do código que aquele objeto sempre terá o mesmo estado, ou seja, os valores de suas properties será sempre o mesmo. Em muitos casos, isso nos traz maior segurança e controle, pois quando mais que uma classe acessa um mesmo objeto mutável, uma delas pode mudar o objeto sem que a outra seja notificada da alteração, e isso dificulta a procura por defeitos já que o objeto pode ter propriedades específicas alteradas em vários pontos diferentes do código. Também, isso torna mais complicado de entender as interações que estão acontecendo entre as classes, principalmente para quem não escreveu o código.
Outra excelente propriedade dos objetos imutáveis é que eles são thread-safe. Isso significa que podemos tranquilamente compartilhar objetos imutáveis entre threads distintas, pois eles não mudam e assim não é necessário se preocupar com sincronização. Em vez de, por exemplo, compartilhar uma instância de NSMutableArray, podemos da mesma forma compartilhar uma instância de NSArray entre diversas threads, e sempre que quisermos adicionar um elemento nesse array criamos uma nova instância de NSArray contendo os mesmos elementos de antes mais o novo elemento, utilizando métodos como –[NSArray arrayByAddingObject:] ou –[NSArray arrayByAddingObjectsFromArray:]. Supondo que esse array é uma propriedade de algum objeto, quando as outras threads acessarem essa propriedade novamente elas terão o array atualizado.