johnrogers/swift-style

Convenções de estilo de código Swift para código limpo e legível. Use ao escrever código Swift para garantir formatação, nomenclatura, organização e padrões idiomáticos consistentes.

O que é swift-style?

Esta skill, johnrogers/swift-style, define convenções de estilo para código Swift, promovendo consistência, legibilidade e boas práticas. É ideal para desenvolvedores que utilizam assistentes de codificação como Claude Code, Cursor, Codex e similares, garantindo que o código gerado ou editado siga padrões profissionais da comunidade Swift. A skill se baseia em diretrizes como as da Apple e da comunidade (Swift API Design Guidelines), abrangendo tópicos como nomenclatura de variáveis e funções (camelCase, nomes descritivos), formatação (indentação, espaçamento, uso de `self` implícito), organização de arquivos e tipos (estruturas sobre classes quando possível, uso de extensões para agrupamento), e padrões idiomáticos (uso de `guard let`, `defer`, `map`, `filter`, `reduce` e tratamento de erros com `throws`). Ao seguir estas convenções, o usuário obtém código mais robusto, fácil de manter e que facilita a colaboração em equipe, pois reduz a fricção visual e semântica durante revisões.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/johnrogers/claude-swift-engineering/tree/main/skills/swift-style

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que swift-style faz?

Convenções de estilo de código Swift para código limpo e legível. Use ao escrever código Swift para garantir formatação, nomenclatura, organização e padrões idiomáticos consistentes.

Regras de Nomenclatura

  • Use camelCase para nomes de variáveis, constantes, funções e parâmetros. Exemplo: userName, calculateTotal.
  • Use PascalCase para nomes de tipos (structs, classes, enums, protocols). Exemplo: UserProfile, NetworkManager.
  • Nomes devem ser descritivos, mas concisos. Evite abreviações como usr ou btn.
  • Prefira nomes baseados em papéis para protocols: suffixo Protocol ou nome descritivo, conforme a comunidade Swift. Exemplo: DataProvider ou Cachable.
  • Para booleanos, use prefixos como is, has, can. Exemplo: isActive, hasPermission.

Formatação e Espaçamento

  • Use 4 espaços para indentação. Não use tabs.
  • Coloque chaves abertas na mesma linha da declaração (estilo K&R). Exemplo:
    func fetchData() {
        // código
    }
    
  • Use espaços em branco para separar blocos lógicos. Não exagere.
  • Limite as linhas a 120 caracteres, mas prefira ~100 para facilitar a leitura em telas menores.
  • Não use ; no final das linhas.
  • Remova importações não utilizadas.

Convenções Específicas da Linguagem

  • Prefira let sobre var sempre que o valor não precisar ser mutável.
  • Use guard let ou if let para desembrulhar opcionais. Dê preferência a guard let no início de funções para early exit.
  • Use defer para limpeza de recursos, como fechar arquivos ou liberar locks.
  • Para coleções, prefira map, filter, reduce e outras funções de alta ordem em vez de loops explícitos, a menos que seja mais claro um for.
  • Para enums com valores associados, use switch com cases exaustivos. Use default apenas quando fizer sentido.
  • Tratamento de erros: use throws e do-catch para erros esperados. Evite try! a menos que a operação nunca possa falhar.
  • Use Self dentro de protocolos e tipos genéricos quando se referir ao tipo conforme.

Organização de Arquivos e Tipos

  • Coloque cada tipo principal em um arquivo separado, com o nome do arquivo igual ao nome do tipo.
  • Use extensões (extensions) para agrupar funcionalidades relacionadas (ex: métodos públicos, conformidade com protocolos).
  • Use // MARK: - para organizar seções dentro de um arquivo, especialmente em classes grandes.
  • Prefira structs sobre classes por padrão. Use classes apenas quando necessário (herança Objective-C, referência compartilhada, etc.).
  • Para propriedades imutáveis computadas, prefira let com closures { ... }() ou inicializadores personalizados.

Padrões Idiomáticos

  • Use Equatable, Hashable e Codable para tipos que representam dados.
  • Use Result para operações assíncronas ou que podem falhar, em vez de callbacks com opcionais.
  • Evite force unwrap (!) a menos que haja garantia absoluta de que o valor não é nil.
  • Prefira enums para estados finitos (ex: loading, success, failure) em vez de strings ou inteiros.
  • Use @available e #available para compatibilidade entre versões do iOS/macOS.
  • Em closures, use [weak self] para evitar ciclos de retenção quando self for capturado.
  • Ao acessar propriedades ou métodos singleton, prefira shared sobre nomes genéricos.

Comentários e Documentação

  • Use comentários para explicar por que algo é feito, não o que é feito (o código deve ser autoexplicativo).
  • Para APIs públicas, use comentários de documentação no formato ///. Inclua descrição, parâmetros e retorno.
  • Exemplo:
    /// Calcula o total com desconto.
    /// - Parameter price: Preço original.
    /// - Parameter discount: Valor do desconto.
    /// - Returns: Preço final após desconto.
    func calculateDiscountedPrice(price: Double, discount: Double) -> Double
    

Siga estas convenções sempre que escrever código Swift em projetos novos ou existentes para garantir consistência e legibilidade.

Habilidades Relacionadas