iOS Inside #005 – Refatoração, produtividade e carreira em alta performance

iOS InsideiOS Inside
6 min read

This article is also available in English:

https://iosinside.hashnode.dev/ios-inside-005-write-like-a-senior-grow-like-a-pro

Fala, dev!
Sabe aquele código que funciona, mas dá uma leve vergonha quando você volta depois de dois meses?
Ou pior: aquele código que tá “ok”, mas você sente que poderia estar muito melhor — só não sabe exatamente como?

Esse episódio do iOS Inside é sobre isso.

Vamos falar de refatorações com propósito.
De como devs sêniors pensam, simplificam e deixam o código mais limpo, legível e escalável — sem firula e sem overengineering.

Além disso:

  • Tem comandos novos no Xcode pra agilizar sua rotina

  • Uma análise do mercado iOS atual, com empresas que estão se destacando

  • E, claro, aquele toque prático com comparação de código que todo mundo adora

Então puxa uma água, abre o Xcode e vamo que vamo!


Refatorando como um sênior: clareza antes de tudo

Vamos direto ao ponto.

Aqui está um código real que poderia estar melhor:

Versão comum

if user.isLoggedIn == true {
    if let name = user.name {
        print("Olá, \(name)")
    }
}

Nada “errado” aqui. Funciona. Mas veja como ele pode ficar mais elegante e expressivo:

Versão refatorada com visão sênior

guard user.isLoggedIn, let name = user.name else { return }
print("Olá, \(name)")

Por que essa versão é melhor?

  • Elimina a duplicidade de verificações aninhadas

  • Usa guard pra sair cedo e limpar o fluxo de leitura

  • Transforma um “caminho feliz” em código direto e legível


Refatoração em ação: uma função que já vimos mil vezes

Vamos pegar um exemplo típico: uma função de validação de formulário.

Versão comum (mas repetitiva e frágil)

func validateForm(email: String, password: String) -> Bool {
    if email.isEmpty || !email.contains("@") {
        print("Email inválido")
        return false
    }

    if password.count < 6 {
        print("Senha muito curta")
        return false
    }

    return true
}

Essa função parece simples — mas tem problemas:

  • Está diretamente acoplada à UI (exibe prints como feedback)

  • Usa lógica embutida difícil de reaproveitar

  • Cresce rápido demais se novas validações forem adicionadas

Versão refatorada com visão sênior

enum FormValidationError: Error, CustomStringConvertible {
    case invalidEmail
    case shortPassword

    var description: String {
        switch self {
        case .invalidEmail:
            return "Email inválido"
        case .shortPassword:
            return "Senha muito curta"
        }
    }
}

func validateForm(email: String, password: String) -> Result<Void, FormValidationError> {
    guard email.contains("@") else {
        return .failure(.invalidEmail)
    }

    guard password.count >= 6 else {
        return .failure(.shortPassword)
    }

    return .success(())
}

E na prática:

switch validateForm(email: inputEmail, password: inputPassword) {
case .success:
    submit()
case .failure(let error):
    showAlert(message: error.description)
}

O que mudou — e por que é melhor?

  • Separação de responsabilidades: validação e exibição de mensagens são tratadas em lugares diferentes.

  • Escalabilidade: novas regras são adicionadas de forma clara.

  • Reutilização: a função pode ser usada em diferentes contextos (ex: CLI, testes, múltiplas telas).

  • Testabilidade: fácil testar os diferentes casos de erro isoladamente.

Esse tipo de refatoração mostra maturidade.
Não é sobre complicar — é sobre criar um código que você consegue crescer sem medo.

Dicas de Xcode que ninguém te contou (mas você vai amar)

Você provavelmente já sabe sobre ⌘ + Shift + O pra buscar qualquer coisa no projeto.
Mas tem muita coisa escondida no Xcode que pode acelerar seu fluxo, economizar cliques e até evitar bugs.

Aqui vão algumas dicas novas (ou pouco exploradas) que valem ouro:

1. ⌘ + Control + J — Reveal in Project Navigator

Tá com um arquivo aberto e não sabe onde ele tá na árvore do projeto?

Aperta ⌘ + Control + J e o Xcode seleciona o arquivo no navigator automaticamente.
Ideal pra quando você quer entender a estrutura ou mover algo de lugar sem ficar caçando na mão.

2. Control + 6 — Navegar entre métodos da classe

Esse aqui é subestimado.
Abre qualquer classe com vários métodos, pressiona Control + 6 e aparece uma lista com todas as funções, variáveis e extensões daquele arquivo.

Você navega direto entre trechos de código sem rolar feito louco.

Dica bônus: digita parte do nome da função e ele filtra.

3. ⌘ + Option + Control + G — Highlight all instances

Quer ver todas as ocorrências de uma variável, função ou nome no arquivo?

Com o cursor em cima dela, usa esse atalho.
Ele destaca todas as ocorrências visuais da palavra — ótimo pra analisar escopo, entender fluxo e refatorar com mais confiança.

Essas dicas são simples, mas quando viram hábito, mudam completamente a agilidade com que você se move no projeto.

Empresas referência em iOS hoje

Essas empresas têm se destacado por investir em produto, stack moderna e engenharia de qualidade:

  • Nubank – foco em arquitetura sólida, boas práticas e escala

  • iFood – alta performance, foco em UX e testes automatizados

  • QuintoAndar – código limpo, Swift moderno e time forte de mobile

  • Innvo Labs – consultoria referência em inovação no setor financeiro, com cultura tech forte, projetos em grandes bancos e destaque crescente no cenário de desenvolvimento mobile. (Dessa eu falo com propriedade 🤓)

  • Wildlife Studios – engenharia madura, cultura de aprendizado

  • Gympass – produtos internacionais, devs com ownership real

  • XP Inc. – times ágeis e tecnologia como pilar estratégico

No exterior, vale ficar de olho em:

  • Shopify – time iOS referência em modularização e SwiftUI

  • Airbnb – stack avançada, investimento em arquitetura escalável

  • Spotify – cultura de engenharia forte, projetos open source

  • Apple – claro né? Mas o processo seletivo é longo e exigente

  • Revolut – fintech com ritmo intenso e foco em código limpo


Wrap-up: dev sênior não se mede por tempo, mas por clareza

Se tem uma coisa que ficou clara neste episódio, é que maturidade no desenvolvimento iOS não tem a ver com quantos anos de carreira você tem, e sim com como você pensa e escreve código.

Você viu que:

  • Refatorar bem é, muitas vezes, remover código — não adicionar complexidade

  • Bons atalhos e comandos no Xcode aceleram sua produtividade sem esforço extra

  • O mercado valoriza quem entende arquitetura, se comunica bem e escreve código testável

  • Empresas como Innvo, Nubank, iFood, QuintoAndar e muitas outras estão abrindo portas pra quem entrega clareza e consistência

Se você chegou até aqui, já deu um passo além da média.
Agora é praticar, compartilhar, discutir — e evoluir junto com a comunidade.


Próximo episódio: vem aí o Swiftly 1.0

No iOS Inside #006 vamos falar de:

  • Tudo sobre o Swiftly 1.0

  • Reflexões práticas sobre produtividade e fluxo de trabalho em times iOS

  • Uma nova sessão surpresa que vai trazer código real da comunidade

Nos vemos em breve.

Valeu demais por ler. Até o próximo drop!


#iOSInside #SwiftTips #iOSDev #SwiftLang #MobileDev #DesenvolvimentoiOS #Refatoração #CarreiraDev #XcodeTips #Swift6

0
Subscribe to my newsletter

Read articles from iOS Inside directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

iOS Inside
iOS Inside