Upgrade to Pro — share decks privately, control downloads, hide ads and more …

L’immutabilité en JavaScript

L’immutabilité en JavaScript

L’immuabilité en JavaScript, pourquoi est-ce un sujet ? Utilisée dans les frameworks modernes, elle fait l’objet de tout un écosystème d’utilitaires. Le concept n’est pas nouveau même si les raisons de son utilisation en javascript sont différentes. Nous allons voir ensemble les concepts et faire un tour d’horizon de l’écosystème.

Avatar for FRIN Yvonnick

FRIN Yvonnick

June 14, 2018

Other Decks in Programming

Transcript

  1. Qu’est ce que c’est ? immutable object (unchangeable object) is

    an object whose state cannot be modified after it is created Wikipédia
  2. Disclaimer Tous les exemples de cette présentation seront à base

    de loutres. Parce qu’elles sont trop badass !
  3. Plus maintenable • Pas d’effets de bords • Pas de

    couplage temporel • Meilleure lisibilité (Vraiment ?) • Facile à tester
  4. Plus performant ⚡ • Comparaison rapide (Shallow compare) • Moins

    de consommation de mémoire • Facile à mettre en cache
  5. React • L’état (state) est considéré comme immutable • Les

    propriétés (props) le sont aussi puisqu’on considère qu’elle résulte de l’ état du composant parent
  6. qim

  7. Nouveautés • Index négatifs dans les tableaux • Ajout du

    step dans la slice notation • Ajout de l’optional chaining • Support de nouveaux types natifs ? • Et on est ouvert à d’autres propositions
  8. Performances ⚡ ES2015 destructuring immutable 3.8.2 seamless-im mutable 7.1.3 immer

    1.2.0 qim 0.0.52 immutad•t 2.0.0 Set a property 1119320ops/s (893ns/op) No run 70726ops/s (14.1µs/op) 161608ops/s (6.19µs/op) 563444ops/s (1.77µs/op) 615460ops/s (1.62µs/op) Set in small list (1000 items) 16308ops/s (61.3 µs/op) 6516ops/s (153µs/op) No run 2619ops/s (382µs/op) 10010ops/s (99.9µs/op) 11729ops/s (85.3µs/op) Set in medium list (10000 items) 1564ops/s (639µs/op) 606ops/s (1.65ms/op) No run 270ops/s (3.71ms/op) 1008ops/s (992µs/op) 1373ops/s (728µs/op) Set in large list (100000 items) 116ops/s (8.65ms/op) 57ops/s (17.4ms/op) No run 24ops/s (42.4ms/op) 84ops/s (11.9ms/op) 105ops/s (9.49ms/op)