Debounce, ou l'art de ne pas comprendre son propre code
Posté le Tue 23 September 2025 dans Humeur
Temps de lecture estimé : 1 minute(s).
Il y a un truc que je ne comprendrai jamais dans le dev frontend : l'usage systématique de debounce comme solution miracle. Comment on en est arrivés à utiliser debounce absolument partout ? Dès qu'un problème un peu complexe pointe le bout de son nez, on balance un debounce et on fait semblant d'avoir réglé le soucis.
Debounce a pourtant été inventé pour une bonne raison. Pour des cas bien spécifiques, comme les événements sur le redimensionnement d'une fenêtre qui sont difficilement contrôlables, ou pour par exemple gérer l'autocomplétion lorsqu'un utilisateur tape des caractères dans un champ, afin d'éviter des appels trop fréquents aux services. Debounce, c'est pour gérer les événements incontrôlables. Et je me dois d'insister ici sur le mot "incontrôlable". En aucun cas debounce n'a été inventé pour masquer une architecture bancale ou un code qui appelle 10 fois la même méthode sans qu'on sache pourquoi.
Et pourtant, aujourd'hui, c'est ce qui se passe. Debounce est devenu la réponse universelle à tous les problèmes. Trop d'appels API ? Debounce. Un clic qui bug ? Debounce. Une fonction qui s'exécute trop tôt ? Debounce, encore, toujours. On ne cherche même plus à comprendre, on retarde juste le problème de 300ms en priant pour que ça passe... Franchement, c'est moche. C'est horrible, même. Et je trouve que ça montre la non-maîtrise qu'on les développeurs sur leur propre code.
Résultat ? Des applications truffées de setTimeout() arbitraires, de bugs impossibles à déboguer, et une expérience utilisateur qui se dégrade petit à petit. Et le pire, c'est que ca marche... jusqu'à ce que finalement ça ne marche plus. Parce que le réseau est lent. Parce que la machine est un peu vieille. Parce que les 300ms hardcodés ne suffisent plus. Et je ne parle même pas des ralentissements qui s'accumulent à force de timeouts empilés comme des rustines sur un bateau qui prend l'eau.
Bref, debounce, ça donne l'illusion d'avoir résolu le problème, alors qu'on l'a juste caché sous le tapis. Et puis un jour, nettoyer sous le tapis sera trop compliqué, alors il faudra acheter un nouveau tapis.