For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale
Theme
Codex

Codex use case

Refactorisation d’écrans SwiftUI

Utilisez Codex pour découper un écran SwiftUI trop volumineux en petites sous-vues tout en conservant son comportement et sa mise en page.

Difficulty Advanced
Time horizon 1h

Avec Codex et le plugin Build iOS Apps, découpez une longue vue SwiftUI en vues dédiées à chaque section, déplacez les effets de bord hors de body et stabilisez la gestion de l’état et son suivi avec Observation. Privilégiez l’architecture MV pour éviter d’introduire des modèles de vue superflus.

Best for

  • Fichiers SwiftUI volumineux où `body` mêle mise en page, conditions, traitements asynchrones et actions définies sur place, ce qui complique la revue de code de l’écran
  • Fonctionnalités iOS existantes dont le code doit devenir plus facile à maintenir tout en conservant exactement la même apparence et le même comportement à l’écran
  • Écrans où des paramètres de sous-vue explicites et des fonctions de rappel permettraient de simplifier les propriétés calculées de type `some View`, les modèles de vue optionnels ou la transmission de l’état

Contents

    ← All use cases

    Refactorisation d’écrans SwiftUI

    Utilisez Codex pour découper un écran SwiftUI trop volumineux en petites sous-vues tout en conservant son comportement et sa mise en page.

    Avec Codex et le plugin Build iOS Apps, découpez une longue vue SwiftUI en vues dédiées à chaque section, déplacez les effets de bord hors de body et stabilisez la gestion de l’état et son suivi avec Observation. Privilégiez l’architecture MV pour éviter d’introduire des modèles de vue superflus.

    Advanced
    1h

    Avec Codex et le plugin Build iOS Apps, découpez une longue vue SwiftUI en vues dédiées à chaque section, déplacez les effets de bord hors de body et stabilisez la gestion de l’état et son suivi avec Observation. Privilégiez l’architecture MV pour éviter d’introduire des modèles de vue superflus.

    Advanced
    1h

    Best for

    • Fichiers SwiftUI volumineux où `body` mêle mise en page, conditions, traitements asynchrones et actions définies sur place, ce qui complique la revue de code de l’écran
    • Fonctionnalités iOS existantes dont le code doit devenir plus facile à maintenir tout en conservant exactement la même apparence et le même comportement à l’écran
    • Écrans où des paramètres de sous-vue explicites et des fonctions de rappel permettraient de simplifier les propriétés calculées de type `some View`, les modèles de vue optionnels ou la transmission de l’état

    Skills & Plugins

    • Utilisez le skill de refactorisation des vues SwiftUI pour guider Codex lorsqu’il modifie un écran volumineux. Il peut ainsi extraire des sous-vues dédiées et simplifier l’utilisation d’Observation tout en préservant la stabilité du flux de données et le comportement de l’écran.
    Skill Why use it
    Build iOS Apps Utilisez le skill de refactorisation des vues SwiftUI pour guider Codex lorsqu’il modifie un écran volumineux. Il peut ainsi extraire des sous-vues dédiées et simplifier l’utilisation d’Observation tout en préservant la stabilité du flux de données et le comportement de l’écran.

    Starter prompt

    Utilisez le plugin Build iOS Apps et son skill de refactorisation des vues SwiftUI pour simplifier [NameOfScreen.swift] tout en conservant le comportement et l’apparence de l’écran. Contraintes - Préservez le comportement, la mise en page, la navigation et la logique métier, sauf si vous découvrez un bug. Dans ce cas, signalez-le séparément. - Privilégiez MV par défaut plutôt que MVVM. Utilisez en priorité `@State`, `@Environment`, `@Query`, `.task`, `.task(id:)` et `onChange` avant d’introduire un nouveau modèle de vue. Ne conservez un modèle de vue que si la fonctionnalité en a clairement besoin. - Organisez la vue pour qu’elle se lise facilement de haut en bas. Placez d’abord les propriétés stockées, puis l’état calculé, `init`, `body`, les éléments auxiliaires de la vue et enfin les méthodes auxiliaires. - Extrayez chaque section cohérente dans un type `View` dédié, avec quelques paramètres explicites, des liaisons `@Binding` et des fonctions de rappel. Ne remplacez pas un `body` volumineux par une série de longues propriétés calculées de type `some View`. - Déplacez les actions de bouton complexes et les effets de bord hors de `body`, dans de petites méthodes. Placez la logique métier proprement dite dans des services ou des modèles. - Gardez une hiérarchie de vues stable à la racine. Évitez les branches `if/else` à la racine qui font alterner des écrans entièrement différents lorsqu’il suffit d’appliquer une condition à une section ou d’utiliser un modificateur. - Pendant la refactorisation, veillez à ce que la bonne vue détienne chaque modèle suivi par Observation. Sur iOS 17 et versions ultérieures, utilisez `@State` pour les modèles `@Observable` à la racine. Évitez les modèles de vue optionnels ou initialisés tardivement, sauf si l’interface a réellement besoin de représenter l’état ainsi. - Après chaque extraction, lancez la compilation ou le test le plus ciblé qui permette de vérifier que l’écran se comporte toujours de la même manière. Éléments à fournir - L’écran refactorisé et les sous-vues extraites - Une brève explication du découpage en sous-vues et de la circulation des données - Les endroits où vous avez choisi de conserver un modèle de vue et les raisons de ce choix - Les vérifications effectuées pour confirmer que le comportement de l’écran est resté identique
    Utilisez le plugin Build iOS Apps et son skill de refactorisation des vues SwiftUI pour simplifier [NameOfScreen.swift] tout en conservant le comportement et l’apparence de l’écran. Contraintes - Préservez le comportement, la mise en page, la navigation et la logique métier, sauf si vous découvrez un bug. Dans ce cas, signalez-le séparément. - Privilégiez MV par défaut plutôt que MVVM. Utilisez en priorité `@State`, `@Environment`, `@Query`, `.task`, `.task(id:)` et `onChange` avant d’introduire un nouveau modèle de vue. Ne conservez un modèle de vue que si la fonctionnalité en a clairement besoin. - Organisez la vue pour qu’elle se lise facilement de haut en bas. Placez d’abord les propriétés stockées, puis l’état calculé, `init`, `body`, les éléments auxiliaires de la vue et enfin les méthodes auxiliaires. - Extrayez chaque section cohérente dans un type `View` dédié, avec quelques paramètres explicites, des liaisons `@Binding` et des fonctions de rappel. Ne remplacez pas un `body` volumineux par une série de longues propriétés calculées de type `some View`. - Déplacez les actions de bouton complexes et les effets de bord hors de `body`, dans de petites méthodes. Placez la logique métier proprement dite dans des services ou des modèles. - Gardez une hiérarchie de vues stable à la racine. Évitez les branches `if/else` à la racine qui font alterner des écrans entièrement différents lorsqu’il suffit d’appliquer une condition à une section ou d’utiliser un modificateur. - Pendant la refactorisation, veillez à ce que la bonne vue détienne chaque modèle suivi par Observation. Sur iOS 17 et versions ultérieures, utilisez `@State` pour les modèles `@Observable` à la racine. Évitez les modèles de vue optionnels ou initialisés tardivement, sauf si l’interface a réellement besoin de représenter l’état ainsi. - Après chaque extraction, lancez la compilation ou le test le plus ciblé qui permette de vérifier que l’écran se comporte toujours de la même manière. Éléments à fournir - L’écran refactorisé et les sous-vues extraites - Une brève explication du découpage en sous-vues et de la circulation des données - Les endroits où vous avez choisi de conserver un modèle de vue et les raisons de ce choix - Les vérifications effectuées pour confirmer que le comportement de l’écran est resté identique

    Refactorisez un écran en préservant son comportement

    Ce cas d’usage s’applique lorsqu’un fichier SwiftUI contient tout le code d’un écran devenu si complexe que la moindre modification semble risquée. L’objectif n’est ni de repenser la fonctionnalité ni d’inventer une nouvelle architecture. Demandez à Codex de préserver le comportement et la disposition de l’écran, puis de le découper en petites sous-vues en explicitant les échanges de données. La prochaine modification sera ainsi plus facile à examiner.

    Utilisez le plugin Build iOS Apps pour ce type de refactorisation. Son skill de refactorisation des vues SwiftUI recommande de privilégier MV par défaut plutôt que MVVM, de placer la logique métier dans les services ou les modèles et d’utiliser en priorité l’état local de la vue et les dépendances fournies par l’environnement. Ne conservez un modèle de vue que si la fonctionnalité en a clairement besoin.

    Quelles consignes donner à Codex ?

    Commencez par indiquer le fichier d’un écran précis et demandez à Codex d’en améliorer la structure tout en préservant son comportement. Incluez les consignes de refactorisation suivantes dans votre prompt :

    • Réorganisez le fichier pour qu’il soit facile à parcourir de haut en bas. Présentez, dans cet ordre, les dépendances fournies par l’environnement, les propriétés stockées, les propriétés calculées qui décrivent l’état sans produire de vue, init, body, les fonctions et propriétés auxiliaires qui produisent des vues, puis les autres méthodes auxiliaires.
    • Extrayez les sections qui forment un ensemble cohérent dans des types View dédiés. Limitez leurs entrées à quelques paramètres explicites, liaisons @Binding et fonctions de rappel.
    • Limitez le nombre et la taille des propriétés calculées de type some View. Évitez de reconstituer un écran gigantesque en juxtaposant une longue série de fragments de vue définis par des propriétés calculées privées.
    • Déplacez les actions de bouton complexes et les effets de bord hors de body, et confiez la logique métier proprement dite aux services ou aux modèles.
    • Préservez la stabilité de l’arborescence de la vue racine. Placez les conditions dans les sections ou les modificateurs concernés plutôt que d’utiliser des branches if/else à la racine pour remplacer des écrans entiers.
    • À chaque étape, vérifiez quelle vue possède les modèles suivis par Observation et corrigez ce point si nécessaire. Sous iOS 17 et versions ultérieures, la vue qui possède un modèle racine @Observable doit le stocker dans @State. N’utilisez les anciens wrappers d’observation que si votre cible de déploiement l’exige.

    Demandez une vérification ciblée à chaque étape

    Vérifiez que la refactorisation préserve bien le comportement de l’écran. Après chaque extraction significative, demandez à Codex d’effectuer la vérification la plus légère qui couvre l’écran : une compilation, un aperçu, un test ou une vérification sur simulateur. Demandez-lui ensuite de résumer les changements de structure et de préciser ce qu’il a délibérément conservé.

    Conseils pratiques

    Découpez l’écran avant de discuter de l’architecture

    Si un écran est trop volumineux, demandez à Codex d’extraire chaque section dans une vue dédiée avant d’introduire une nouvelle couche d’abstraction. Une arborescence de vues plus courte et plus explicite suffit souvent à éviter l’ajout d’un modèle de vue.

    Limitez l’interface de chaque sous-vue au strict nécessaire

    Privilégiez les valeurs déclarées avec let, les liaisons @Binding et les fonctions de rappel dédiées à une seule action plutôt que de transmettre l’intégralité du modèle parent à chaque vue enfant. Vous pourrez ainsi prévisualiser plus facilement chaque section extraite et risquerez moins de la rendre à nouveau dépendante de l’écran entier par inadvertance.

    Demandez à Codex de préciser ce qu’il a délibérément conservé

    Pour vérifier la refactorisation, demandez à Codex d’énumérer explicitement les éléments qu’il a préservés : les règles métier, le comportement de la navigation, la persistance des données, la signification des événements et des mesures d’analyse, ainsi que la disposition de l’écran telle que l’utilisateur la voit. La revue de code sera bien plus rapide.

    Tech stack

    Need

    Architecture de l’interface

    Default options

    SwiftUI avec une architecture qui privilégie MV et s’appuie sur @State, @Environment et de petits types View dédiés

    Why it's needed

    Les écrans volumineux sont généralement plus faciles à maintenir lorsque Codex simplifie la hiérarchie des vues et la propagation de l’état avant d’ajouter une couche de modèles de vue.

    Need

    Workflow de refactorisation

    Default options

    Plugin Build iOS Apps

    Why it's needed

    Le skill de refactorisation des vues SwiftUI du plugin indique à Codex comment extraire les sous-vues, utiliser Observation et isoler les effets de bord tout en préservant le comportement de l’écran.

    Need

    Validation

    Default options

    xcodebuild, aperçus et vérifications ciblées de l’interface

    Why it's needed

    Par rapport à une réécriture en une seule étape, une refactorisation progressive permet de vérifier plus facilement que le comportement reste identique. Après chaque extraction, lancez une compilation ciblée ou faites une vérification dans le simulateur.

    Need Default options Why it's needed
    Architecture de l’interface SwiftUI avec une architecture qui privilégie MV et s’appuie sur @State , @Environment et de petits types View dédiés Les écrans volumineux sont généralement plus faciles à maintenir lorsque Codex simplifie la hiérarchie des vues et la propagation de l’état avant d’ajouter une couche de modèles de vue.
    Workflow de refactorisation Plugin Build iOS Apps Le skill de refactorisation des vues SwiftUI du plugin indique à Codex comment extraire les sous-vues, utiliser Observation et isoler les effets de bord tout en préservant le comportement de l’écran.
    Validation xcodebuild , aperçus et vérifications ciblées de l’interface Par rapport à une réécriture en une seule étape, une refactorisation progressive permet de vérifier plus facilement que le comportement reste identique. Après chaque extraction, lancez une compilation ciblée ou faites une vérification dans le simulateur.

    Related use cases