Le code qui ne suit pas les modèles de conception établis (comme Singleton, Factory ou Observer) peut entraîner des problèmes tels que le couplage étroit, le manque de flexibilité ou la duplication du code.
Copilot Chat peut vous aider à utiliser des modèles de conception appropriés pour rendre votre code plus flexible et plus facile à maintenir. Par exemple, il peut recommander de convertir des instanciations répétitives en un modèle Factory ou d’utiliser le modèle Observer pour dissocier les classes étroitement connectées.
Note
Les réponses décrites dans cet article sont des exemples. Copilot Chat Les réponses ne sont pas déterministes, il est donc possible que vous obteniez des réponses différentes de celles présentées ici.
Exemple de scénario
Ce code JavaScript crée trois objets Person
, chacun avec name
et age
propriétés. Il utilise ensuite le nom d’une personne pour récupérer et imprimer son âge.
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
var people = {};
function addPerson(name, age) {
people[name] = new Person(name, age);
}
function getAge(name) {
if (people[name]) {
console.log(name + " is " + people[name].age + " years old.");
} else {
console.log("Person not found.");
}
}
addPerson("Ana", 30);
addPerson("Mario", 25);
addPerson("Louise", 40);
getAge("Mario");
Exemples d’invite 1
What design patterns could improve this code? Don't show me code examples.
Exemples de réponse 1
Copilot suggère les modèles suivants :
- Modèle Singleton: pour vous assurer qu’il n’existe qu’une seule instance de l’objet
people
. - Modèle de fabrique : pour créer une fabrique pour la création d’objets
Person
. - Modèle de module : pour encapsuler l’objet
people
et les fonctions associées dans un module pour éviter de polluer l’espace de noms global.
Exemples d’invite 2
Vous pouvez maintenant demander à Copilot d’implémenter le modèle que vous sentez le plus approprié.
Refactor this code using the module pattern
Exemples de réponse 2
const PersonModule = (function() {
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
const people = {};
function addPerson(name, age) {
people[name] = new Person(name, age);
}
function getAge(name) {
if (people[name]) {
console.log(name + " is " + people[name].age + " years old.");
} else {
console.log("Person not found.");
}
}
return {
addPerson,
getAge
};
})();
PersonModule.addPerson("Ana", 30);
PersonModule.addPerson("Mario", 25);
PersonModule.addPerson("Louise", 40);
PersonModule.getAge("Mario");
Le modèle de module améliore l’organisation du code, améliore la confidentialité des données et réduit le risque de conflits d’affectation de noms, ce qui rend le code plus gérable et évolutif.