- 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
Hacker-News-Kommentare
if-Anweisungen verwendet und sich durch eine binäre Suche vereinfachen ließe.log()-Aufrufe, einenpow()-Aufruf und die Verwendung vonceil()im Code infrage und schlagen vor, dass ein einfacherer Ansatz effektiver sein könnte.log-Operationen und von Division auf Ganzzahlen im Code wird als unnötig komplex und fehleranfällig kritisiert.