Blog →

par
Rafael Masson
November 17, 2022
· Mis à jour le
Tout logiciel a besoin de limites. Presque chaque partie d’un logiciel a besoin d’une limite stricte. Du moins, chaque partie qui manipule des listes. Dans la plupart des langages et des bases de données, cela veut dire des tableaux et des chaînes de caractères.
Cela paraît évident, mais je suggère à chaque ingénieur qui lit ces lignes d’ouvrir sa base de code et de jeter un œil. Vous avez sûrement des validations de longueur ici et là, mais si vous n’avez jamais consacré une demi-journée à passer en revue toutes vos listes pour fixer une limite à chacune, il vous reste probablement plusieurs failles.
Je ne parle pas des limites évidentes, visibles par les utilisateurs, comme le plafond de 5 utilisateurs du forfait Starter ou de 25 utilisateurs de notre essai gratuit. Je parle des limites que 99 % des utilisateurs n’atteindront jamais. Par exemple, coller plusieurs paragraphes dans l’objet d’un e-mail au lieu du corps. Ou, de la même façon, saisir les « Notes » d’un contact dans le champ « Prénom ». Ou encore ces boucles infinies qui vous tomberont dessus dès que vous lancerez une API publique.
Le seul cas où vous n’avez pas besoin de limite stricte, c’est quand une liste est toujours lue avec une pagination. Après tout, qui dit pagination dit LIMIT déjà en place.
J’adore les limites strictes. J’adore savoir qu’elles sont là. J’adore en ajouter de nouvelles à chaque nouvelle fonctionnalité. Les limites strictes sont la clé pour que je dorme sur mes deux oreilles.
Elles demandent aussi peu d’efforts : pas besoin de documentation publique. Vous prévoyez naturellement des messages d’erreur corrects pour les rares cas extrêmes qui les atteindront, mais personne n’a besoin de les garder en tête pour savoir si elles vont affecter son activité.
Vous devriez même vous imposer de ne pas avoir à les communiquer. Si vous commencez à voir un nombre significatif d’exceptions, c’est sûrement que la limite est trop basse. Le but n’est pas d’agacer ou de brider les utilisateurs, mais d’éviter les plantages. Passer une limite de 500 à 1 000 ne fera pas planter votre app, mais cela peut faire la différence entre un utilisateur qui l’atteint une fois par mois et un utilisateur qui l’atteint tous les jours.
C’est aussi l’occasion de se rappeler que le monde est divers. Restez humble, acceptez et embrassez le fait que certains de vos clients auront des usages que vous n’aviez jamais imaginés. Ne tombez pas dans le piège d’accuser les gens de mal utiliser votre logiciel.
Un jour, une organisation s’est heurtée à une limite et nous a écrit. Elle avait besoin de plus de 25 champs personnalisés sur un contact. Lui avons-nous demandé d’expliquer sa situation et de voir comment adapter son usage ? Bien sûr que non. Nous avions fixé cette limite de 25 arbitrairement au départ, nous pouvions donc tout aussi bien la passer à 50. Problème réglé !
Je vous suggère de vous limiter à une courte liste de nombres pour toutes vos limites :
1 • 5 • 10 • 50 • 100 • 500 • 1000 • 5000
Ce sont les plus faciles à retenir pour tout le monde. L’écart entre chacun est aussi assez grand pour que la décision soit facile. Inutile de perdre du temps à se demander si 100, 200 ou 300 convient. Un doute sur 100 ? Prenez 500, c’est largement suffisant !
Le « 1 » sert pour les Ko ou les Mo. Quelle doit être la taille maximale du corps HTML d’un e-mail ? Vous conviendrez sûrement que 1 Mo suffit, sachant que c’est à peu près la taille d’un tome de Harry Potter.
Quelle taille de charge utile JSON notre serveur web doit-il refuser d’analyser ? 5 Mo ou 10 Mo, les deux nous vont très bien. La seconde est la limite qu’utilise Amazon API Gateway.
Quand vous répondez à un fil d’e-mails et que nous le citons sous votre réponse, où nous arrêtons-nous ? 10 Ko de texte cité, et le tour est joué.
Combien de libellés allez-vous appliquer à cette seule conversation ? J’espère que 100 vous suffiront.
Au-delà de combien de sessions simultanées commence-t-on à flairer plusieurs utilisateurs qui rechignent à payer un prix juste par siège ? Je n’ai jamais vu personne en avoir besoin de plus de 10.
Et la liste est encore longue.
J’espère que cet article vous a plu et que vous passerez votre prochaine matinée à ajouter de jolies limites partout dans votre code. Allez-y, c’est amusant ! ✌️