Código Limpo em Swift: princípios e exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Clean Code em Swift: princípios e exemplos



Código limpo (Clean Code) não é apenas um termo da moda, mas uma filosofia de desenvolvimento que impacta diretamente a velocidade de criação de funcionalidades, a quantidade de bugs e o prazer no trabalho. Para desenvolvedores Swift que trabalham em aplicativos iOS e macOS, é especialmente importante escrever código fácil de ler e manter, já que os projetos duram anos e as equipes mudam. Neste artigo, vamos analisar os principais princípios do Clean Code aplicados ao Swift e ver exemplos concretos.



1. Nomenclatura: fale a linguagem do domínio



A nomenclatura correta é a base de um código legível. Nomes de variáveis, funções e classes devem responder às perguntas "o quê?" e "por quê?". Evite abreviações e nomes de uma letra (exceto i em loops curtos).



Exemplo ruim:

func calc(a: Int, b: Int) -> Int {    return a * b + 10}


Exemplo bom:

func calculateTotalPriceWithShipping(itemPrice: Int, shippingCost: Int) -> Int {    return itemPrice + shippingCost}


Para variáveis booleanas, use prefixos is, has, should:

var isUserLoggedIn: Bool = falsevar hasCompletedOnboarding: Bool = true


Nomes de classes devem ser substantivos ( UserManager, NetworkService ), e funções — verbos ou frases verbais ( fetchData(), validateEmail() ).



2. Funções: pequenas e com uma única responsabilidade



Cada função deve fazer exatamente uma coisa e fazê-la bem. O tamanho ideal de uma função é de 10 a 20 linhas. Se a função ultrapassar 30 linhas — divida-a em funções menores.



Exemplo ruim: função que valida, salva e envia notificação.

func processUser(_ user: User) {    // Validação    guard !user.name.isEmpty else { return }    guard user.age > 18 else { return }        // Salvamento    CoreDataManager.shared.save(user)        // Notificação    NotificationCenter.default.post(name: .userDidRegister, object: nil)}


Exemplo bom: divisão em três funções separadas.

func processUser(_ user: User) {    guard isValid(user) else { return }    saveUser(user)    notifyUserRegistration()}

private func isValid(_ user: User) -> Bool { return !user.name.isEmpty && user.age > 18}

private func saveUser(_ user: User) { CoreDataManager.shared.save(user)}

private func notifyUserRegistration() { NotificationCenter.default.post(name: .userDidRegister, object: nil)}


Evite também um grande número de parâmetros. Se houver mais de três — agrupe-os em uma estrutura.



struct SearchConfig {    let query: String    let category: String?    let page: Int    let pageSize: Int}

func search(with config: SearchConfig) -> [Result] { ... }


3. SOLID em Swift: exemplos práticos



Os princípios SOLID são a pedra angular do código limpo em linguagens orientadas a objetos. Vamos analisar dois princípios-chave com exemplos em Swift.



Princípio da Responsabilidade Única (SRP)

Uma classe deve ter apenas um motivo para mudar. Não misture lógica de rede e UI.



// Violação do SRPclass UserViewController: UIViewController {    func fetchUser() {        URLSession.shared.dataTask(with: URL(string: "...")!) { ... }    }    func updateUI() { ... }}

// Correçãoclass UserNetworkService { func fetchUser(completion: (User) -> Void) { ... }}

class UserViewController: UIViewController { let networkService = UserNetworkService() func loadUser() { networkService.fetchUser { [weak self] user in DispatchQueue.main.async { self?.updateU

Blogs

Book Recommendations