3 points par GN⁺ 2023-09-28 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2023-09-28
Avis Hacker News
  • Selon les commentaires, le snippet StackOverflow le plus copié de tous les temps comporte un défaut.
  • Les commentateurs soulignent que le code défectueux utilise des valeurs codées en dur inutiles et des instructions if, et qu’il pourrait être simplifié avec une recherche binaire.
  • Certains commentateurs remettent en question les deux appels à log(), un appel à pow(), ainsi que l’utilisation de ceil() dans le code, et suggèrent qu’une approche plus simple pourrait être plus efficace.
  • Il existe des bibliothèques alternatives pour formater des tailles dans un format lisible par l’humain, comme la bibliothèque PrettySize pour Rust et .NET.
  • Certains développeurs expriment leur inquiétude face au fait de copier depuis StackOverflow du code peu fiable pour le coller dans leurs applications.
  • L’utilisation d’opérations log en virgule flottante et de divisions appliquées à des entiers dans le code est critiquée comme étant inutilement complexe et sujette aux bugs.
  • Cette discussion souligne l’importance de comprendre les principes fondamentaux du code, plutôt que de s’appuyer sur des snippets copiés.
  • Les commentaires reflètent aussi un problème plus large autour du partage des connaissances dans des communautés comme StackOverflow et du risque de propagation d’informations erronées.