👨‍💻 11 dicas 'top' para desenvolvedores Swift

Conrado Carneiro
Usemobile
Published in
3 min readFeb 8, 2017

--

Menos é mais! Escreva menos, produza mais!

Situação:

Você desenvolvia aplicativos em Objective-C e se achava o último biscoito do pacote, de repetente a Apple anuncia uma nova linguagem, Swift, com a promessa que a curva de aprendizado será ainda menor e que qualquer pessoa poderá desenvolver aplicativos.

Você sente que sua posição está ameaçada?

Então essas dicas são para você!

Sinta-se livre para copiar os códigos e testa-los no Playground. Se tiver qualquer dúvida basta deixar nos comentários.

1. Extension

Sem Extension:

Foi criada uma variável inutilmente para armazenar o valor, não precisamos digitar tanto para obter resultados tão simples. Vejam como isso fica usando Extension.

Com Extension:

2. Generics

Imprimir todos os elementos de um Array

Muitas funções para fazer a mesma coisa. Vamos reescrever, utilizando apenas uma função.

3. Loop: For vs While

Imprimir "Usemobile" 5 vezes

É criada a variável 'i' para controlar a quantidade de vezes que o código será executado.

Preste atenção!

Mais variáveis → mais memorização → mais dores de cabeça → mais bugs → mais problemas na sua vida.

Lembre-se do "Efeito borboleta!"

4. Guard let vs If let

Um simples código para login de usuário é assim:

Você consegue perceber a "pirâmide da destruição" (Pyramid of doom)?
Esses código aninhado é desagradável.

Nunca destrua o mal, faça o bem!

A diferença é grande! Se uma ou mais das variáveis tiver valor inválido (nill), o código 'top' irá sair antecipadamente da função chamando o return. Caso todos os valores sejam válidos, ele irá dar continuidade chamando a função print e a mensagem de boas vindas será exibida!

Pronto, adeus pirâmide!

Adeus Pyramid of Doom!!

5. Property vs Function

Calculando o diâmetro de um circulo.

Criamos duas funções mutuamente exclusivas. Isso pode ser facilmente otimizado. Lembre-se:

Escreva menos, produza mais!

Agora as variáveis de raio (radius) e diâmetro (diameter) são independentes entre si.

Mais conexões → menos digitação → menos erros tipográficos → menos erros de código → menos problemas na sua vida!

6. Enum para "Type Safe"

Exemplo: Tipos de preços para ingressos.

"Adult", "Child" e "Senior" são strings, que gastam mais tempo para serem comparadas e sempre que forem mencionadas precisam ser escritas por completo, pois o compilador não consegue inferir os tipos existentes.

Ou seja?

Você está digitando muito e produzindo pouco!

Exemplo: Tipos de preços para ingressos com Enum.

//ATUALIZADO: otimizando ainda mais!

Fim dos erros de digitação!

Agora o compilador entende que .Adult, .Child e .Senior são tipos pertencentes a People. Esse tipos ficam destacado visualmente e o XCode irá auxiliar auto-completando quando forem utilizados.

7. Closure vs Function

Mas isso pode ficar mais simples né? Veja só!

8. Programação Funcional

Exemplo: Imperativo (😒)

Exemplo: Declarativo (😍)

"Programação Funcional é fenomenal." Clarice Lispector

9. Nil Coalescing

Exemplo: Usuário customizando a cor do perfil.

Código ficou muito grande. Veja como fica melhor de outra forma!

De forma simplificada, o código acima indica se a variável userCustomColor for nill, o valor atribuído a colorForLayout será defaultColor (UIColor.Red) caso contrário será a cor escolhida pelo usuário.

10. Coalescência condicional

Exemplo: Aumentar o salário se for programador Sénior.

Como sempre digo: Código muito grande!

"Menos é mais!"

O código a seguir indica que se isSenior for verdadeiro (true), adiciona 4500 ao valor currentSalary, senão adiciona zero.

Eu sei que "11 dicasTop" 🔝 não são suficientes para lhe transformar em um programador sênior, mas pode lhe poupar muito tempo!
Lembrem-se:

Tempo é dinheiro!

[BÔNUS] Declaração de nomes para funções

Exemplo: Função para definir um e-mail.

Traduzido de: 10 Tips to become a better Swift Developer

ATUALIZADO:

Confira o artigo Luta contra XCode 🥊 com algumas dicas fundamentais para reduzir o tempo de build do projeto.

--

--

Conrado Carneiro
Usemobile

iOS developer, desenvolvo projetos na área de computação móvel, iBeacon, watch, apple Tv.