3 puntos por GN⁺ 2023-09-28 | 1 comentarios | Compartir por WhatsApp
  • El snippet de StackOverflow más copiado, escrito por Andreas Lundblad en 2010, tiene un defecto.
  • Este snippet es una solución al problema de mostrar una cantidad de bytes en un formato legible para humanos. Por ejemplo, expresar 123,456,789 bytes como "123.5 MB".
  • La solución de Lundblad usa logaritmos en lugar de un bucle para calcular el sufijo adecuado (kB, MB, GB, etc.).
  • Este snippet se convirtió en el más copiado después de ser identificado en un estudio de 2018 titulado "Uso y atribución de fragmentos de código de Stack Overflow en proyectos de GitHub".
  • El estudio encontró que la mayoría de las personas no incluyen la atribución adecuada cuando copian código de Stack Overflow.
  • El defecto del snippet de Lundblad es un error de redondeo cuando la cantidad de bytes se acerca a 1 MB. Por ejemplo, una entrada de 999,999 bytes produce como resultado "1000.0 kB" en lugar del correcto "1.0 MB".
  • Lundblad ofrece una versión corregida del código que maneja este problema y otros casos extremos. Entre ellos están las entradas negativas y los límites de precisión de double.
  • La principal lección que deja este artículo es la importancia de probar todos los casos extremos, la complejidad de la aritmética de punto flotante y la necesidad de dar la atribución adecuada al copiar código.

1 comentarios

 
GN⁺ 2023-09-28
Comentarios de Hacker News
  • Según los comentarios, el snippet de StackOverflow más copiado de todos los tiempos tiene defectos.
  • Quienes comentan señalan que el código defectuoso usa valores hardcodeados innecesarios y sentencias if, y que podría simplificarse con una búsqueda binaria.
  • Algunas personas cuestionan las dos llamadas a log(), una llamada a pow() y el uso de ceil() en el código, y sugieren que un enfoque más simple podría ser más efectivo.
  • Existen bibliotecas alternativas para formatear tamaños en un formato legible para humanos, como la biblioteca PrettySize para Rust y .NET.
  • Algunas personas desarrolladoras expresan preocupación por copiar código poco confiable de StackOverflow y pegarlo en sus aplicaciones.
  • El uso de operaciones log de punto flotante y divisiones aplicadas a enteros en el código es criticado por ser excesivamente complejo y propenso a errores.
  • La discusión enfatiza la importancia de comprender los principios básicos del código, en lugar de depender de snippets copiados.
  • Los comentarios también reflexionan sobre el problema más amplio de compartir conocimiento en comunidades como StackOverflow y la posibilidad de que se difunda información errónea.