Maison > interface Web > js tutoriel > Améliorer le couplage dans votre projet

Améliorer le couplage dans votre projet

Mary-Kate Olsen
Libérer: 2024-12-24 22:09:11
original
944 Les gens l'ont consulté

Salut tout le monde ! Cet article est destiné à vous aider à améliorer la façon dont les types de données de votre projet sont connectés, les rendant plus fiables et plus faciles à comprendre.

TLDR pour vous les pressés : évitez de répéter des types et des consts qui font référence à la même chose et essayez de leur donner des noms évocateurs (même s'il s'agit d'une simple chaîne ou d'un nombre). Cela vous permettra d'identifier, de modifier ou de supprimer plus facilement votre code ultérieurement.


Le problème

Imaginez que vous développez un site Web de commerce électronique et que vous avez défini le type de produit comme :

export type ProductType = {
  id: string;
  name: string;
  price: number;
};
Copier après la connexion

Sur un projet de ce genre, vous pouvez facilement trouver de multiples façons de faire référence à l'identifiant d'un produit, à partir de fonctions simples :

  • const getProductById = (produits : ProductType[], id : string) => {...};
  • const onProductPress = (productId : string) => {...};

Pour des situations plus avancées, telles que la sauvegarde des données d'un produit dans un magasin d'état ou la transmission d'accessoires à d'autres composants dans JS Frameworks


Les enjeux

Abordons maintenant le(s) problème(s) avec cette approche :

  1. Et si l'identifiant du produit n'était pas aussi simple et facile à retenir ? Et si c'était quelque chose comme ab12-w35-s48-09 (représentant par exemple la variante de produit de catégorie de fournisseur) ?
  2. Et si, et c'est mon point clé, vous deviez changer le type d'identifiant du produit, dans toutes ses occurrences tout au long de votre projet ? Cela pourrait être particulièrement difficile si vous lui donnez des noms différents (comme productId, product_id, pid ou id) lorsque vous y faites référence dans différents fichiers. Vous ne pouvez pas non plus simplement rechercher une chaîne, car vous trouveriez très certainement de nombreuses occurrences qui n'y sont pas liées.

Les solutions potentielles

Pour résoudre le premier problème, vous pouvez utiliser des Types de littéraux de modèle, ce qui donnerait au nouvel identifiant de produit le type : ${string}-${string}-${string}-${string}. Répéter cela sur plusieurs fichiers serait désormais ennuyeux, donc on pourrait soit :

  • créez un type personnalisé pour le champ id et utilisez-le dans ProductType :
type ProductIdType = `${string}-${string}-${string}-${string}`
Copier après la connexion

Si nécessaire, vous pouvez également créer et faire référence à différents types pour chaque chaîne, ou faire référence à d'autres que vous avez créés précédemment. Enfin, vous utiliseriez le nouveau type comme tel :

(productId : ProductIdType) => {...}
Copier après la connexion
  • ou vous pouvez vous référer à l'entrée id du ProductType :
(productId : ProductType['id']) => {...}
Copier après la connexion

Ces deux approches résoudraient le deuxième problème : partout où vous trouveriez ProductIdType ou ProductType['id'], vous sauriez que vous avez affaire à l'identifiant d'un produit et que vous devriez le remplacer.

La première solution peut sembler plus conviviale, mais vous auriez désormais une structure en deux parties, où vous avez un type pour le produit et un autre pour l'identifiant, qui peuvent être utilisés indépendamment. Voici un exemple de représentation de ladite structure :

Improving Coupling in your Project

Il s'agit sans aucun doute d'un problème moindre, mais si vous modifiez/supprimez l'entrée id du ProductType, cette modification ne sera pas reflétée dans l'ensemble de votre projet.

La dernière approche, cependant, est celle que je suis habituellement, car elle augmente le couplage de vos données (faute d'un meilleur mot). Toutes vos références aux données du produit pointent désormais directement vers le ProductType :

Improving Coupling in your Project


Conclusion

Je ne dis pas que vous devriez toujours créer des types pour toutes vos données. Chaque fois que je me vois répéter des références au même type de données, j'opte généralement pour accéder à l'original, comme dans la deuxième approche.

Astuce bonus 1 : Vous pouvez appliquer la même logique pour les consts : si vous vous voyez répéter le même nombre magique ou la même chaîne à plusieurs endroits, il est préférable de lui donner une désignation appropriée et de l'utiliser.

Astuce bonus 2 : Utilisez Choisir, Omettre et Exclure ainsi que d'autres types d'utilitaires si vous souhaitez sélectionner/exclure plusieurs entrées d'un type au lieu de les répéter.

C'est tout ! J'espère que vous avez aimé mon message. N'hésitez pas à laisser vos commentaires sur ce sujet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal