- L’extrait le plus copié de Stack Overflow, écrit par Andreas Lundblad en 2010, contient un défaut.
- Cet extrait propose une solution au problème consistant à afficher un nombre d’octets dans un format lisible par un humain. Par exemple, représenter 123,456,789 octets sous la forme "123.5 MB".
- La solution de Lundblad utilise les logarithmes au lieu d’une boucle pour calculer le suffixe approprié (
kB, MB, GB, etc.).
- Cet extrait a été identifié comme le plus copié dans une étude de 2018 intitulée "Usage and Attribution of Stack Overflow Code Snippets in GitHub Projects".
- L’étude a montré que la plupart des gens n’incluent pas d’attribution appropriée lorsqu’ils copient du code depuis Stack Overflow.
- Le défaut de l’extrait de Lundblad est une erreur d’arrondi lorsque le nombre d’octets approche de 1 MB. Par exemple, une entrée de 999,999 octets produit "1000.0 kB" au lieu du résultat correct "1.0 MB".
- Lundblad fournit une version corrigée du code qui gère ce problème ainsi que d’autres cas limites. Cela inclut les entrées négatives et les limites de précision des
double.
- La principale leçon à retenir de cet article est l’importance de tester tous les cas limites, la complexité de l’arithmétique en virgule flottante et la nécessité d’une attribution appropriée lorsqu’on copie du code.
1 commentaires
Avis Hacker News
log(), un appel àpow(), ainsi que l’utilisation deceil()dans le code, et suggèrent qu’une approche plus simple pourrait être plus efficace.logen virgule flottante et de divisions appliquées à des entiers dans le code est critiquée comme étant inutilement complexe et sujette aux bugs.