09 Productivité développeur

Données d’exemple et modernisation du code legacy

9.5 Génération de sample data 🧪📦

Définition

La sample data est de la donnée d’exemple utilisée pour :

  • tests ;
  • démos ;
  • développement local ;
  • documentation ;
  • prototypage ;
  • seed database ;
  • validation d’interface ;
  • simulation de cas métier.

Copilot peut générer :

  • objets JSON ;
  • fixtures ;
  • données SQL ;
  • fichiers CSV ;
  • mocks ;
  • exemples d’événements ;
  • payloads API.

Exemple JSON

Prompt :

Texte
Generate sample JSON data for 5 users.

Requirements:
- include id, name, email, role, createdAt
- roles: admin, user, viewer
- use fake data only
- do not use real personal data

Réponse possible :

JSON
[
  {
    "id": "user_001",
    "name": "Alice Martin",
    "email": "alice.martin@example.com",
    "role": "admin",
    "createdAt": "2026-01-15T10:00:00Z"
  },
  {
    "id": "user_002",
    "name": "Noah Bernard",
    "email": "noah.bernard@example.com",
    "role": "user",
    "createdAt": "2026-01-16T11:30:00Z"
  }
]

Exemple SQL seed

Prompt :

Texte
Generate SQL seed data for a products table.

Schema:
- id UUID
- name text
- price decimal
- status text
- created_at timestamp

Constraints:
- 10 rows
- realistic but fake data
- include active and inactive products

Exemple fixtures de test

Prompt :

Texte
Generate pytest fixtures for User objects.

Include:
- active user
- deactivated user
- admin user
- user with missing optional profile fields

Use fake data only.

Attention aux données réelles

Ne jamais demander :

Texte
Generate sample data based on our real customer export.

Mieux :

Texte
Generate fake sample data with the same schema as this anonymized example.

À retenir

Copilot est très utile pour générer de la sample data, mais elle doit être fictive, sûre et adaptée au schéma.

9.6 Modernisation de code legacy 🏗️

Définition

Moderniser du code legacy signifie améliorer une ancienne base de code pour la rendre :

  • plus lisible ;
  • plus maintenable ;
  • plus testable ;
  • plus sécurisée ;
  • compatible avec des versions récentes ;
  • alignée avec les pratiques actuelles.

Copilot peut aider à :

  • comprendre le legacy ;
  • identifier les risques ;
  • proposer un plan ;
  • générer des tests avant refactoring ;
  • migrer une syntaxe ;
  • remplacer des APIs obsolètes ;
  • améliorer le typage ;
  • découper de grosses fonctions.

Exemple JavaScript ancien

Code :

js
function getUsers(callback) {
  db.query("SELECT * FROM users", function(err, result) {
    if (err) {
      callback(err);
    } else {
      callback(null, result);
    }
  });
}

Prompt :

Texte
Create a plan to modernize this callback-based function to async/await.
Preserve behavior.
Do not modify code yet.
Include tests to add before migration.

Puis :

Texte
Refactor this function to async/await.
Preserve error behavior.
Use the existing db client.
Add Jest tests.

Exemple Python legacy

Code :

py
def get_user(id):
    query = "SELECT * FROM users WHERE id = " + id
    return db.execute(query)

Prompt :

Texte
Modernize this function safely.

Goals:
- prevent SQL injection
- add type hints
- preserve behavior
- use parameterized queries
- suggest tests

Do not introduce new dependencies.

Pourquoi ne pas demander directement “rewrite” ?

Parce que le legacy contient souvent :

  • comportements implicites ;
  • hacks historiques ;
  • dépendances cachées ;
  • bugs devenus “features” ;
  • règles métier non documentées.

Une réécriture brutale peut casser la production.

Bonne approche avec Copilot

  1. Explain the legacy code.
  2. Identify behavior to preserve.
  3. Add characterization tests.
  4. Create a refactoring plan.
  5. Change small parts.
  6. Run tests.
  7. Review diffs.

À retenir

Legacy code + Copilot = comprendre avant de modifier.

Question examen typique :

Une équipe veut moderniser du legacy code critique.
Quelle est la meilleure première étape ?

Bonne réponse :

Utiliser Copilot pour analyser le code, identifier le comportement existant et proposer un plan/tests avant modification.

À retenir pour le GH-300

  • La sample data est fictive, minimisée et sans secret : le schéma utile ne justifie pas de partager des valeurs de production.
  • Pour du legacy critique : comprendre, identifier le comportement à préserver, tester, planifier, puis modifier progressivement.
  • Ask Mode et Plan Mode réduisent le risque avant une transformation large.

D5 · Productivité développeur · 10–15 %