90% des devs Java font cette erreur avec les Streams
Je vois souvent cette erreur : modifier une variable externe depuis un stream. Ça marche, mais c'est un piège.
Pourquoi c'est problématique ?
1• Violation de l'immutabilité : Les streams sont conçus pour la programmation fonctionnelle. Modifier une variable externe casse ce paradigme.
2• Danger avec .parallel() : Si vous ajoutez .parallel() plus tard, votre code plantera. ArrayList n'est pas thread-safe, vous aurez des race conditions.
3• Difficile à tester : Votre méthode ne retourne rien, elle modifie juste un état externe. Comment testez-vous ça proprement ?
4• Performance : forEach() avec des effets de bord empêche certaines optimisations du compilateur.
La solution ? Laissez le stream créer la collection pour vous. C'est exactement pour ça que collect() existe.
Pourquoi la solution est meilleure :
✅ Thread-safety garantie : toList() crée une nouvelle collection de façon atomique
✅ Immutabilité : Vous ne modifiez pas d'état existant, vous créez quelque chose de nouveau
✅ Lisibilité : L'intention est claire, on voit qu'on construit une liste
✅ Testabilité : La méthode retourne un résultat, facile à assert
✅ Optimisations : Le compilateur peut mieux optimiser les opérations pures
✅ Parallélisation safe : Votre code fonctionnera avec .parallel() sans modification
#Java #JavaDeveloper #CleanCode