09 Productivité développeur
Refactorer et documenter avec Copilot
9.3 Refactoring assisté 🛠️
Définition
Le refactoring consiste à améliorer la structure du code sans changer son comportement externe.
Copilot peut aider à :
- réduire la duplication ;
- améliorer la lisibilité ;
- extraire des fonctions ;
- simplifier des conditions ;
- améliorer le typage ;
- isoler des responsabilités ;
- rendre le code plus testable ;
- moderniser une syntaxe.
Exemple simple
Code initial :
function getActiveUsers(users) {
let result = [];
for (let i = 0; i < users.length; i++) {
if (users[i].active === true) {
result.push(users[i]);
}
}
return result;
}Prompt :
Refactor this function to make it more idiomatic JavaScript.
Preserve behavior.Suggestion :
function getActiveUsers(users) {
return users.filter(user => user.active === true);
}Exemple avec contraintes
Prompt :
Refactor the selected function.
Goals:
- improve readability
- reduce duplication
- keep behavior unchanged
Constraints:
- do not change the public function signature
- do not introduce new dependencies
- preserve existing error messages
- suggest tests that verify behavior did not changeCe prompt est très bon pour l’examen.
Refactoring risqué
Mauvais prompt :
Rewrite this module.Pourquoi c’est risqué ?
- scope trop large ;
- comportement peut changer ;
- tests oubliés ;
- dette technique déplacée ;
- logique métier cassée.
Meilleur prompt :
Analyze this module and propose a safe refactoring plan.
Do not modify code yet.
Identify tests to add before refactoring.Exemple legacy
Prompt étape 1 :
Explain this legacy function and identify behavior that must be preserved.
Do not modify code.Prompt étape 2 :
Suggest a refactoring plan that preserves behavior.
Add tests before changing implementation.Prompt étape 3 :
Refactor only the selected function.
Keep the public API unchanged.À retenir
Refactorer avec Copilot = améliorer sans casser.
Toujours demander :
Preserve behavior.
Do not change public API.
Add or suggest tests.9.4 Documentation technique 📚
Définition
Copilot peut aider à produire ou améliorer de la documentation technique.
Il peut générer :
- docstrings ;
- commentaires utiles ;
- README ;
- documentation API ;
- guides d’installation ;
- exemples d’usage ;
- changelog ;
- résumé de module ;
- documentation de configuration ;
- explication d’architecture.
Exemple docstring
Code :
def normalize_email(email: str) -> str:
return email.strip().lower()Prompt :
Add a concise docstring explaining purpose, input, output, and edge cases.Suggestion :
def normalize_email(email: str) -> str:
"""
Normalize an email address by trimming surrounding whitespace and converting it to lowercase.
Args:
email: The email address to normalize.
Returns:
The normalized email address.
"""
return email.strip().lower()Exemple README
Prompt :
Generate a README section explaining how to run this project locally.
Use:
- package.json scripts
- Dockerfile
- .env.example
Include:
- prerequisites
- installation
- environment variables
- run command
- test commandCopilot peut produire une section claire.
Exemple documentation API
Prompt :
Generate API documentation for this endpoint.
Include:
- method and path
- required headers
- request body
- response body
- status codes
- error cases
- example request
- example responseAttention aux commentaires inutiles
Copilot peut parfois générer des commentaires évidents.
Mauvais commentaire :
// Increment i by 1
i++;Inutile.
Bon commentaire :
// Retry only transient failures. 4xx responses are treated as permanent client errors.Utile, car il explique une décision métier ou technique.
À retenir
Bonne documentation = explique le pourquoi, les contraintes et l’usage.
Mauvaise documentation = répète ce que le code dit déjà.
À retenir pour le GH-300
- Un refactoring préserve le comportement et l’API publique sauf changement explicitement demandé.
- Un bon prompt de documentation demande le but, le contrat, les erreurs, les effets de bord et des exemples vérifiables.
- Une review Copilot aide à trouver des pistes ; elle ne remplace ni les tests ni la review humaine.
Pratique : Améliorer une demande à Copilot
Voici des prompts vagues. Réécris-en au moins quelques-uns pour qu’ils énoncent explicitement un objectif, du contexte, l’entrée concernée, des contraintes, le format attendu et des critères de validation. Aucune IA n’intervient : seule la complétude du prompt est analysée, à partir de sa formulation.
Prompt 1 sur 2
Prompt à améliorer
Refactor this module.
Écris-le comme tu le saisirais dans Copilot Chat, en anglais (comme dans le cours) ou en français. Invente les détails utiles (langage, fichier, règle métier…).
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Un refactoring préserve le comportement et l’API publique sauf changement explicitement demandé.
- Un bon prompt de documentation demande le but, le contrat, les erreurs, les effets de bord et des exemples vérifiables.
- Une review Copilot aide à trouver des pistes ; elle ne remplace ni les tests ni la review humaine.
Objectif GH-300
- Générer, refactorer, documenter (Use Copilot for code generation, refactoring, and documentation)
Achèvement
Il reste à faire : , .