3 Punkte von GN⁺ 2023-09-28 | 1 Kommentare | Auf WhatsApp teilen
  • Das 2010 von Andreas Lundblad geschriebene und am häufigsten kopierte StackOverflow-Snippet enthält einen Fehler.
  • Dieses Snippet ist eine Lösung für das Problem, eine Byte-Anzahl in einem menschenlesbaren Format auszugeben. Zum Beispiel, 123.456.789 Byte als "123.5 MB" darzustellen.
  • Lundblads Lösung verwendet Logarithmen statt einer Schleife, um das passende Suffix (kB, MB, GB usw.) zu berechnen.
  • Dieses Snippet wurde als das am häufigsten kopierte identifiziert, nachdem es in der Studie von 2018 mit dem Titel "Nutzung und Quellenangabe von Stack Overflow-Code-Snippets in GitHub-Projekten" untersucht worden war.
  • Die Studie ergab, dass die meisten Menschen beim Kopieren von Code aus Stack Overflow keine angemessene Quellenangabe beifügen.
  • Der Fehler in Lundblads Snippet ist ein Rundungsfehler, wenn sich die Byte-Anzahl 1 MB nähert. Zum Beispiel ergibt eine Eingabe von 999.999 Byte fälschlicherweise "1000.0 kB" statt des korrekten "1.0 MB".
  • Lundblad stellt eine korrigierte Version des Codes bereit, die dieses Problem und andere Randfälle behandelt. Dazu gehören negative Eingaben und die Präzisionsgrenzen von double.
  • Die wichtigsten Lehren aus diesem Artikel sind die Bedeutung, alle Randfälle zu testen, die Komplexität der Gleitkommaarithmetik und die Notwendigkeit einer angemessenen Quellenangabe beim Kopieren von Code.

1 Kommentare

 
GN⁺ 2023-09-28
Hacker-News-Kommentare
  • Laut den Kommentaren weist das am häufigsten kopierte StackOverflow-Snippet aller Zeiten einen Fehler auf.
  • Die Kommentierenden weisen darauf hin, dass der fehlerhafte Code unnötige hartcodierte Werte und if-Anweisungen verwendet und sich durch eine binäre Suche vereinfachen ließe.
  • Einige Kommentierende stellen die zwei log()-Aufrufe, einen pow()-Aufruf und die Verwendung von ceil() im Code infrage und schlagen vor, dass ein einfacherer Ansatz effektiver sein könnte.
  • Es gibt alternative Bibliotheken zum Formatieren von Größen in ein menschenlesbares Format, etwa die PrettySize-Bibliotheken für Rust und .NET.
  • Einige Entwickler äußern Bedenken darüber, unzuverlässigen Code von StackOverflow zu kopieren und in ihre eigenen Anwendungen einzufügen.
  • Die Verwendung von Gleitkomma-log-Operationen und von Division auf Ganzzahlen im Code wird als unnötig komplex und fehleranfällig kritisiert.
  • Die Diskussion unterstreicht, wie wichtig es ist, die grundlegenden Prinzipien des Codes zu verstehen, statt sich auf kopierte Snippets zu verlassen.
  • Die Kommentare reflektieren außerdem das breitere Problem des Wissensaustauschs in Communities wie StackOverflow und die Möglichkeit, dass sich Fehlinformationen verbreiten.