- 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
Comentarios de Hacker News
if, y que podría simplificarse con una búsqueda binaria.log(), una llamada apow()y el uso deceil()en el código, y sugieren que un enfoque más simple podría ser más efectivo.logde punto flotante y divisiones aplicadas a enteros en el código es criticado por ser excesivamente complejo y propenso a errores.