Le code qui ne suit pas les modèles de conception établis (comme Singleton, Factory ou Observer) peut entraîner des problèmes tels qu’un fort couplage, un manque de flexibilité ou une duplication de code.
Discussion avec Copilot 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 des classes étroitement liées.
Remarque
Les réponses décrites dans cet article sont des exemples. Les réponses Discussion avec Copilot ne sont pas déterministes, vous pouvez donc obtenir des réponses différentes de celles décrites ici.
Exemple de scénario
Ce code JavaScript crée trois objets Person, chacun avec les propriétés name et age. Il utilise ensuite le nom d’une personne pour récupérer et afficher 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.
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");
What design patterns could improve this code? Don't show me code examples.
What design patterns could improve this code? Don't show me code examples.
Exemple 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 Factory** : pour créer une fabrique pour la création d’objets `Person`. -
**Modèle Module** : pour encapsuler l’objet `people` et les fonctions associées dans un module afin d’é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 considérez comme le plus approprié.
Refactor this code using the module pattern
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");
Refactor this code using the module pattern
Refactor this code using the module pattern
Exemple 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 Module améliore l’organisation du code, optimise la confidentialité des données et réduit le risque de conflits de noms, ce qui rend le code plus facile à maintenir et à faire évoluer.