Remonter les conditions dans la fonction
- S’il y a une condition
if dans une fonction, il faut envisager de la déplacer vers l’appelant (caller).
- Au lieu que la fonction vérifie elle-même une précondition et ne fasse « rien du tout » si elle n’est pas satisfaite, on fait vérifier la précondition par l’appelant afin que le type garantisse qu’elle est remplie.
- En « remontant » notamment les préconditions, on peut réduire le volume global de vérifications, ce qui constitue l’une des motivations de cette règle.
Descendre les boucles
- Règle issue d’une pensée orientée données, qui introduit la notion de « batch » d’un objet, prend les opérations par lot comme cas de base et traite la version scalaire comme un cas particulier de la version par lot.
- Le principal avantage est l’amélioration des performances, en amortissant les coûts de démarrage et en apportant de la flexibilité dans l’ordre de traitement.
- Par exemple, pour la multiplication de polynômes basée sur la FFT, évaluer un polynôme simultanément en plusieurs points peut être plus rapide que de faire des évaluations individuelles.
L’avis de GN⁺
- Le point le plus important de cet article est la présentation de deux règles de programmation, « remonter les conditions » et « descendre les boucles », afin d’améliorer les performances et la clarté du code dans le développement logiciel.
- Ces règles contribuent à améliorer la lisibilité du code, à optimiser les performances et à réduire le risque de bugs.
- Cet article est intéressant et utile pour de nombreux développeurs, car il apporte des pistes pour gérer la complexité du génie logiciel et écrire du code efficace.
1 commentaires
Commentaire Hacker News
ifet desfor.forpeut faire passer le temps d’exécution d’une simulation d’une semaine à une heure. Les personnes ayant ce type de parcours optimisent instinctivement l’ordre desforet desif.ifa l’inconvénient de rendre les préconditions et postconditions d’une fonction invisibles directement dans sa définition. Dans les grands projets, ces fonctions peuvent être réutilisées en dehors du contexte prévu, ce qui peut provoquer des bugs. Utiliser un framework de contrats peut être une solution, mais cela oblige à écrire les conditions deux fois, dans les contrats et dans le code.ifdoivent être en haut de la fonction et non en bas, et les erreurs doivent bien se propager.foret les instructionsifsont toutes deux des opérations de contrôle de flux, donc certaines affirmations de l’article paraissent dépourvues de sens. Les affirmations sur les performances sont les plus solides, mais elles devraient être considérées en dernier parmi les préoccupations liées aux conseils généraux.ifquand la condition dépend souvent d’unwalrus.ifde précondition chez l’appelant est, selon certains, une idée affreuse. Cela peut être pertinent dans des cas particuliers, mais en général on ne le souhaite pas. Dans une bibliothèque, il faut vérifier les préconditions à la frontière externe afin que l’implémentation interne puisse avancer sans hypothèses implicites. Dépendre de la vérification faite par l’appelant annule cet objectif.