For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme
Codex

Codex use case

Refatore telas em SwiftUI

Use o Codex para dividir uma tela SwiftUI muito grande em pequenas subviews sem alterar o comportamento nem o layout.

Difficulty Advanced
Time horizon 1h

Use o Codex e o plugin Build iOS Apps para dividir uma view SwiftUI extensa em subviews por seção, mover os efeitos colaterais para fora de body e tornar mais estáveis o gerenciamento de estado e o uso de Observation. Priorize a arquitetura MV para evitar view models desnecessários.

Best for

  • Arquivos SwiftUI muito grandes em que é difícil revisar a tela porque `body` concentra o layout, a lógica condicional, as operações assíncronas e a implementação das ações
  • Funcionalidades existentes do aplicativo iOS que precisam manter a mesma aparência e o mesmo comportamento enquanto o código fica mais fácil de manter
  • Telas com propriedades computadas que retornam `some View`, view models opcionais ou código de gerenciamento de estado que pode ser simplificado com entradas e callbacks explícitos nas subviews

Contents

    ← All use cases

    Refatore telas em SwiftUI

    Use o Codex para dividir uma tela SwiftUI muito grande em pequenas subviews sem alterar o comportamento nem o layout.

    Use o Codex e o plugin Build iOS Apps para dividir uma view SwiftUI extensa em subviews por seção, mover os efeitos colaterais para fora de body e tornar mais estáveis o gerenciamento de estado e o uso de Observation. Priorize a arquitetura MV para evitar view models desnecessários.

    Advanced
    1h

    Use o Codex e o plugin Build iOS Apps para dividir uma view SwiftUI extensa em subviews por seção, mover os efeitos colaterais para fora de body e tornar mais estáveis o gerenciamento de estado e o uso de Observation. Priorize a arquitetura MV para evitar view models desnecessários.

    Advanced
    1h

    Best for

    • Arquivos SwiftUI muito grandes em que é difícil revisar a tela porque `body` concentra o layout, a lógica condicional, as operações assíncronas e a implementação das ações
    • Funcionalidades existentes do aplicativo iOS que precisam manter a mesma aparência e o mesmo comportamento enquanto o código fica mais fácil de manter
    • Telas com propriedades computadas que retornam `some View`, view models opcionais ou código de gerenciamento de estado que pode ser simplificado com entradas e callbacks explícitos nas subviews

    Skills & Plugins

    • Use a habilidade de refatoração de views SwiftUI para extrair subviews dedicadas, manter o fluxo de dados estável, simplificar o uso de Observation e preservar o comportamento enquanto o Codex edita telas grandes em SwiftUI.
    Skill Why use it
    Build iOS Apps Use a habilidade de refatoração de views SwiftUI para extrair subviews dedicadas, manter o fluxo de dados estável, simplificar o uso de Observation e preservar o comportamento enquanto o Codex edita telas grandes em SwiftUI.

    Starter prompt

    Use o plugin Build iOS Apps e sua habilidade de refatoração de views SwiftUI para reorganizar [NameOfScreen.swift] sem alterar a aparência nem o funcionamento da tela. Restrições: - Preserve o comportamento, o layout, a navegação e a lógica de negócio, a menos que encontre um bug que precise ser apontado separadamente. - Adote MV como padrão em vez de MVVM. Dê preferência a `@State`, `@Environment`, `@Query`, `.task`, `.task(id:)` e `onChange` antes de introduzir um novo view model. Só mantenha um view model se a funcionalidade realmente precisar dele. - Organize a view para facilitar a leitura de cima para baixo, nesta ordem: propriedades armazenadas, estado calculado, `init`, `body`, elementos auxiliares da view e métodos auxiliares. - Extraia seções com responsabilidades claras para tipos `View` dedicados, com poucas entradas explícitas, vínculos `@Binding` e callbacks. Não troque um `body` enorme por uma série de propriedades computadas extensas que retornam `some View`. - Mova as ações de botão mais complexas e os efeitos colaterais de `body` para métodos pequenos. Leve a lógica de negócio propriamente dita para serviços ou modelos. - Mantenha estável a árvore de views na raiz. Evite usar `if/else` no nível superior para alternar entre telas inteiramente diferentes quando bastar aplicar a condição a uma seção ou usar um modificador. - Durante a refatoração, corrija a definição de qual view é responsável por cada modelo observado com Observation. No iOS 17 ou posterior, use `@State` para os modelos `@Observable` da raiz. Evite view models opcionais ou inicializados mais tarde, a menos que a interface realmente precise representar o estado dessa forma. - Após cada extração, execute a verificação de compilação ou o teste mais simples que comprove que a tela continua se comportando da mesma forma. Entregue: - a tela refatorada e as subviews extraídas - uma breve explicação do que ficou em cada subview e de como os dados circulam entre elas - os pontos em que você decidiu manter um view model e o motivo de cada decisão - as verificações que você executou para comprovar que o comportamento foi preservado
    Use o plugin Build iOS Apps e sua habilidade de refatoração de views SwiftUI para reorganizar [NameOfScreen.swift] sem alterar a aparência nem o funcionamento da tela. Restrições: - Preserve o comportamento, o layout, a navegação e a lógica de negócio, a menos que encontre um bug que precise ser apontado separadamente. - Adote MV como padrão em vez de MVVM. Dê preferência a `@State`, `@Environment`, `@Query`, `.task`, `.task(id:)` e `onChange` antes de introduzir um novo view model. Só mantenha um view model se a funcionalidade realmente precisar dele. - Organize a view para facilitar a leitura de cima para baixo, nesta ordem: propriedades armazenadas, estado calculado, `init`, `body`, elementos auxiliares da view e métodos auxiliares. - Extraia seções com responsabilidades claras para tipos `View` dedicados, com poucas entradas explícitas, vínculos `@Binding` e callbacks. Não troque um `body` enorme por uma série de propriedades computadas extensas que retornam `some View`. - Mova as ações de botão mais complexas e os efeitos colaterais de `body` para métodos pequenos. Leve a lógica de negócio propriamente dita para serviços ou modelos. - Mantenha estável a árvore de views na raiz. Evite usar `if/else` no nível superior para alternar entre telas inteiramente diferentes quando bastar aplicar a condição a uma seção ou usar um modificador. - Durante a refatoração, corrija a definição de qual view é responsável por cada modelo observado com Observation. No iOS 17 ou posterior, use `@State` para os modelos `@Observable` da raiz. Evite view models opcionais ou inicializados mais tarde, a menos que a interface realmente precise representar o estado dessa forma. - Após cada extração, execute a verificação de compilação ou o teste mais simples que comprove que a tela continua se comportando da mesma forma. Entregue: - a tela refatorada e as subviews extraídas - uma breve explicação do que ficou em cada subview e de como os dados circulam entre elas - os pontos em que você decidiu manter um view model e o motivo de cada decisão - as verificações que você executou para comprovar que o comportamento foi preservado

    Refatore uma tela sem alterar seu comportamento

    Este caso de uso se aplica quando um único arquivo SwiftUI concentra todo o código de uma tela enorme e até uma pequena edição parece arriscada. O objetivo não é redesenhar o recurso nem criar uma nova arquitetura. Peça ao Codex que preserve o comportamento e o layout ao dividir a tela em subviews pequenas, com fluxo de dados explícito. Assim, a próxima alteração será mais fácil de revisar.

    Use o plugin Build iOS Apps para esse tipo de refatoração. A habilidade de refatoração de views SwiftUI adota diretrizes práticas. Por padrão, prefira MV a MVVM, mantenha a lógica de negócio em serviços ou modelos, priorize o estado local da view e as dependências do ambiente e só mantenha um modelo de apresentação quando o recurso claramente precisar dele.

    O que pedir ao Codex

    Comece indicando o arquivo de uma tela específica e peça ao Codex que melhore a estrutura sem alterar o comportamento. Inclua estas regras de refatoração diretamente no prompt:

    • Organize o arquivo para facilitar a leitura de cima para baixo. Comece pelas dependências do ambiente, seguidas das propriedades armazenadas, das propriedades computadas que representam estado e não retornam views, de init, de body, dos auxiliares de view e dos métodos auxiliares.
    • Extraia seções que façam sentido por si só para tipos View próprios, com um conjunto pequeno de entradas explícitas, vínculos via @Binding e callbacks.
    • Use poucas propriedades computadas auxiliares do tipo some View e mantenha cada uma pequena. Evite recriar a tela enorme como uma longa lista de propriedades computadas privadas que retornam fragmentos de view.
    • Tire de body as ações de botão mais complexas e os efeitos colaterais. Mova a lógica de negócio propriamente dita para serviços ou modelos.
    • Mantenha estável a árvore da view raiz. Prefira condicionais dentro das seções ou nos modificadores a ramificações if/else no nível superior que substituem telas inteiras.
    • Ao refatorar, corrija também a forma como as views assumem a responsabilidade pelos modelos que usam Observation. No iOS 17 ou posterior, a view responsável por um modelo raiz @Observable deve armazená-lo em @State. Use os wrappers antigos de observação apenas quando a versão mínima do iOS que o aplicativo precisa suportar exigir isso.

    Peça uma validação rápida a cada etapa

    Uma refatoração que preserva o comportamento deve incluir uma verificação que comprove isso. Peça ao Codex que, após cada extração significativa, faça a menor verificação que permita validar a tela, seja uma compilação, uma prévia, um teste ou uma verificação no simulador. Em seguida, peça que resuma o que mudou na estrutura e o que foi mantido de propósito.

    Dicas práticas

    Divida a tela antes de discutir a arquitetura

    Se a tela estiver grande demais, peça ao Codex que extraia as seções para views próprias antes de introduzir uma nova camada de abstração. Com uma árvore de views mais enxuta e explícita, muitas vezes já não há motivo para adicionar um modelo de apresentação.

    Passe a menor interface possível para cada subview

    Prefira valores declarados com let, vínculos via @Binding e callbacks com uma única finalidade a passar o modelo inteiro da view pai para cada view filha. Assim, fica mais fácil visualizar cada seção extraída em uma prévia e mais difícil acoplá-la de novo, por acidente, à tela inteira.

    Peça ao Codex que destaque o que preservou de propósito

    Para refatorar com segurança, peça ao Codex que liste explicitamente o que manteve intacto, como as regras de negócio, o comportamento da navegação, a persistência, o significado dos dados de análise e o layout que o usuário vê. Isso agiliza bastante a revisão.

    Tech stack

    Need

    Arquitetura da interface

    Default options

    SwiftUI com arquitetura MV como padrão e responsabilidades divididas entre @State, @Environment e pequenos tipos View dedicados

    Why it's needed

    Telas grandes costumam ficar mais fáceis de manter quando o Codex simplifica a árvore de views e o fluxo de estado antes de introduzir mais uma camada de view models.

    Need

    Fluxo de refatoração

    Default options

    Plugin Build iOS Apps

    Why it's needed

    A habilidade de refatoração de views SwiftUI do plugin orienta o Codex a extrair subviews, usar Observation e reorganizar os efeitos colaterais sem alterar o comportamento da tela.

    Need

    Validação

    Default options

    xcodebuild, prévias e verificações pontuais da interface

    Why it's needed

    Verificações rápidas na compilação ou no simulador após cada extração dão mais confiança de que o comportamento foi preservado do que uma reescrita one-shot.

    Need Default options Why it's needed
    Arquitetura da interface SwiftUI com arquitetura MV como padrão e responsabilidades divididas entre @State , @Environment e pequenos tipos View dedicados Telas grandes costumam ficar mais fáceis de manter quando o Codex simplifica a árvore de views e o fluxo de estado antes de introduzir mais uma camada de view models.
    Fluxo de refatoração Plugin Build iOS Apps A habilidade de refatoração de views SwiftUI do plugin orienta o Codex a extrair subviews, usar Observation e reorganizar os efeitos colaterais sem alterar o comportamento da tela.
    Validação xcodebuild , prévias e verificações pontuais da interface Verificações rápidas na compilação ou no simulador após cada extração dão mais confiança de que o comportamento foi preservado do que uma reescrita one-shot.

    Related use cases