Oh no!

Utiliser un stores n'est pas bon (Ah bon?)

Récemment, j'ai discuté avec plusieurs développeurs de l'utilisation des stores dans les projets web modernes, notamment avec Vue.js ou encore React.js.

Les avis divergent : comme moi, certains trouvent les stores essentiels, d'autres les jugent inutiles voire problématiques.

Comme souvent lorsque ce genre de débats a lieu, nous partageons nos expériences et nos usages. Mais pour une raison que je ne m'explique pas, en ce qui concerne spécifiquement l'usage des stores, peu de personnes sont vraiment capables de m'expliquer en détail pourquoi un store n'est pas bon.

Je reste moi-même un peu en surface sur mes propres positions.

Ces échanges m'ont incité à réexaminer mon avis, ne serait-ce que pour vérifier que je ne rate rien. Dire que l'usage d'un store est "trop bien" ou "pas bon" est simpliste. Cela soulève des questions. Pourquoi un outil que je trouve aussi pratique suscite-t-il de tels avis parmi les développeurs ?

Décortiquons un peu tout cela.

Comme toute technologie ou technique, un store a ses avantages et ses inconvénients. Il est crucial de comprendre quand et comment l'utiliser.

Avantages des Stores

Les stores, comme Vuex ou Pinia pour Vue.js ou Redux pour React.js, offrent plusieurs avantages dans la gestion de l'état d'une application.

Centralisation de l'État

Un store centralise l'état de l'application, facilitant ainsi sa gestion et son suivi, surtout dans les grandes applications. Cela permet de comprendre comment les différentes parties de l'application interagissent.

Prévisibilité

Les modifications de l'état sont prévisibles, souvent via des actions ou des mutations. Cela rend le flux de données compréhensible et traçable, essentiel pour le débogage et la maintenance.

Débogage Facilité

Des outils comme Redux DevTools permettent de suivre les modifications de l'état au fil du temps. Cela facilite le débogage en fournissant un historique des actions et des mutations.

Réutilisabilité

Les composants peuvent accéder à l'état global sans passer par des props, améliorant ainsi la réutilisabilité du code. Cela permet de créer des composants indépendants et réutilisables.

Inconvénients des Stores

Complexité Accrue

Pour les petites applications, un store peut ajouter une complexité inutile, rendant le code difficile à comprendre et à maintenir. Les concepts supplémentaires, comme les actions et les mutations, peuvent être excessifs. Pour moi, rien de trop négatif. Si le projet est trop petit ou simple, pas la peine de sortir les grands moyens.

Courbe d'Apprentissage

Les nouveaux développeurs doivent apprendre à utiliser le store, ce qui peut ralentir le développement initial. La maîtrise de ces concepts nécessite du temps. Oui, apprendre à maîtriser une nouvelle compétence prend du temps.

Impact sur les Performances

Un store mal utilisé peut entraîner des re-rendus inutiles, affectant ainsi les performances de l'application. Les développeurs doivent être vigilants quant à la manière dont ils structurent et modifient l'état. Je pense que c'est de là que pourrait provenir cette croyance que l'usage d'un store n'est pas bon.

Les stores sont particulièrement utiles dans certaines situations.

Applications de Grande Taille

Pour les applications avec un état complexe, un store aide à gérer l'état de manière organisée. Il maintient une vue d'ensemble claire et facilite la coordination entre les composants.

Applications avec un État Partagé

Si plusieurs composants doivent accéder et modifier le même état, un store simplifie la gestion de cet état partagé. Il évite la duplication de l'état et assure que toutes les parties de l'application travaillent avec les mêmes données. L'exemple parfait est la boutique en ligne. Toutes les pages produits peuvent modifier les informations du panier.

Cependant, l'utilisation d'un store peut poser problème dans certains cas.

Le projet trop petit

Pour les applications simples, un store peut être excessif. Une gestion locale de l'état peut être plus appropriée et plus facile à maintenir. Imaginons un blog dont on s'amuserait à stocker tous les articles et les commentaires dans un store. Aucune information n'est partagée et probablement qu'un blog avec beaucoup d'articles serait un peu lourd à manipuler.

La mauvaise gestion de l'état

Si l'état est mal structuré ou si les composants accèdent directement à l'état sans passer par des actions ou des mutations, cela peut rendre l'application difficile à maintenir. Les modifications imprévisibles de l'état peuvent entraîner des bugs difficiles à identifier.

Exemples de Code

Voici un exemple de code problématique et un exemple fonctionnel utilisant un store.

Code Problématique

const store = {
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  }
};

// Modification directe de l'état
store.state.count = 5;

Dans cet exemple, l'état est modifié directement, rendant le suivi des modifications difficile et imprévisible.

Code Fonctionnel

const store = {
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  },
  commit(mutationName) {
    this.mutations[mutationName](this.state);
  }
};

// Utilisation de la méthode commit pour modifier l'état
store.commit('increment');

Ici, l'état est modifié via une mutation, rendant les modifications prévisibles et traçables.

Je trouve toujours les stores très utiles.

Ce sont des outils puissants pour la gestion de l'état dans les applications web modernes. Cependant, avant de tirer des conclusions hâtives, il me semble important d'évaluer soigneusement leur utilisation.

Dire qu'un store est bon ou non est simpliste. Argumenter apporte plus de valeur et permet de faire grandir sa pratique du développement. Il est essentiel de comprendre les avantages et les inconvénients avant de prendre une décision.

Donc la prochaine fois je dirais simplement qu'avec une utilisation appropriée, les stores peuvent grandement améliorer la maintenabilité et la prévisibilité d'une application.

Si vous souhaitez discuter de cet article, n'hésitez pas à me contacter (le lien ouvre un nouvel onglet). Je serais ravi de vous entendre.

🧑‍🏫

#fr