09 Productivité développeur
Générer du code et expliquer du code existant
9.1 Génération de code ✨
Définition
La génération de code consiste à demander à Copilot de produire du code à partir :
- d’un nom de fonction ;
- d’un commentaire ;
- d’un prompt ;
- d’un fichier existant ;
- d’une interface ;
- d’un test ;
- d’une règle métier ;
- d’un exemple.
Copilot peut générer :
- fonctions ;
- classes ;
- endpoints API ;
- scripts ;
- tests ;
- helpers ;
- DTO ;
- interfaces ;
- composants frontend ;
- requêtes SQL ;
- workflows ;
- snippets de configuration.
Exemple simple
Tu écris :
function calculateDiscount(price: number, percentage: number): number {Copilot peut proposer :
function calculateDiscount(price: number, percentage: number): number {
return price - price * (percentage / 100);
}C’est utile, mais il manque peut-être des validations.
Version plus robuste :
function calculateDiscount(price: number, percentage: number): number {
if (price < 0) {
throw new Error("Price must be non-negative");
}
if (percentage < 0 || percentage > 100) {
throw new Error("Percentage must be between 0 and 100");
}
return price - price * (percentage / 100);
}Exemple avec prompt clair
Prompt :
Generate a TypeScript function to calculate a discounted price.
Requirements:
- price must be non-negative
- percentage must be between 0 and 100
- throw descriptive errors
- return the final price as a number
- include Jest testsCopilot peut produire à la fois la fonction et les tests.
Exemple API
Prompt :
Create an Express POST /users endpoint.
Requirements:
- validate email and password
- hash the password using the existing password service
- do not return passwordHash
- return 201 with the created user
- return 400 for invalid input
- add Jest testsCe prompt est bien meilleur que :
Create user endpoint.Quand utiliser Copilot pour générer du code ? ✅
Utilise Copilot pour :
- boilerplate ;
- fonctions utilitaires ;
- endpoints simples ;
- tests ;
- mappings ;
- transformations de données ;
- scripts ;
- exemples d’intégration ;
- prototypes ;
- accélérer une première version.
Quand être prudent ? ⚠️
Sois prudent quand le code touche :
- authentification ;
- autorisation ;
- chiffrement ;
- IAM ;
- données personnelles ;
- paiements ;
- logique métier critique ;
- suppression de données ;
- migrations DB ;
- infrastructure cloud ;
- production.
Piège d’examen
Question possible :
Copilot génère une fonction qui semble correcte et compile.
Quelle est la meilleure action avant de l’intégrer ?
Bonne réponse :
Relire, tester et valider que le code respecte les exigences, la sécurité et les standards du projet.
Mauvaise réponse :
L’accepter directement parce qu’elle compile.
9.2 Explication de code existant 🔍
Définition
Copilot peut aider à comprendre du code existant.
C’est particulièrement utile quand tu :
- rejoins une nouvelle codebase ;
- lis du legacy code ;
- dois corriger un bug ;
- veux comprendre une dépendance ;
- dois reviewer une PR ;
- dois documenter un module ;
- veux comprendre un test compliqué.
Exemple
Code :
def calculate_score(events):
score = 0
for event in events:
if event["type"] == "purchase":
score += 10
elif event["type"] == "refund":
score -= 5
return max(score, 0)Prompt :
Explain this function step by step.
Identify inputs, outputs, side effects, assumptions, and edge cases.Réponse attendue :
- La fonction prend une liste d’événements.
- Elle initialise un score à 0.
- Elle ajoute 10 pour chaque achat.
- Elle retire 5 pour chaque remboursement.
- Elle retourne un score minimum de 0.
- Elle suppose que chaque event contient une clé "type".
- Elle ne gère pas None, liste vide ou event mal formé.
Exemple plus avancé
Prompt :
Explain the role of this service in the application.
Identify:
- dependencies
- business rules
- side effects
- external calls
- error handling
- areas that are hard to testTrès utile pour comprendre un service métier.
Exemple avec code legacy
Prompt :
Analyze this legacy module.
Do not refactor yet.
Return:
- main responsibilities
- hidden side effects
- global state usage
- external dependencies
- risky areas
- suggested tests before refactoringCe prompt est excellent parce qu’il évite de modifier trop vite.
À retenir
Avant de modifier du code inconnu, utilise Copilot pour le comprendre.
Dans l’examen, si le scénario dit :
Le développeur ne comprend pas un fichier complexe.
La bonne réponse est souvent :
Utiliser Copilot Chat / Ask Mode pour expliquer le code avant de le modifier.
À retenir pour le GH-300
- Générer est un premier jet : objectif, contraintes et validation déterminent sa valeur.
- Pour comprendre du code inconnu, on demande une explication contextualisée avant de modifier.
- Le langage ou l’outil change, mais la règle reste la même : relire, tester et vérifier les affirmations importantes.
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Générer est un premier jet : objectif, contraintes et validation déterminent sa valeur.
- Pour comprendre du code inconnu, on demande une explication contextualisée avant de modifier.
- Le langage ou l’outil change, mais la règle reste la même : relire, tester et vérifier les affirmations importantes.
Objectif GH-300
- Générer, refactorer, documenter (Use Copilot for code generation, refactoring, and documentation)
Achèvement
Il reste à faire : .