3 pontos por GN⁺ 2023-09-28 | 1 comentários | Compartilhar no WhatsApp
  • O snippet mais copiado, escrito por Andreas Lundblad em 2010, tem um defeito.
  • Esse snippet é uma solução para o problema de exibir uma contagem de bytes em um formato legível por humanos. Por exemplo, representar 123.456.789 bytes como "123.5 MB".
  • A solução de Lundblad usa logaritmos em vez de um loop para calcular o sufixo apropriado (kB, MB, GB etc.).
  • Esse snippet tornou-se o mais copiado após ser identificado no estudo de 2018 intitulado "Usage and Attribution of Stack Overflow Code Snippets in GitHub Projects".
  • O estudo descobriu que a maioria das pessoas não inclui a atribuição adequada ao copiar código do Stack Overflow.
  • O defeito no snippet de Lundblad é um erro de arredondamento quando a contagem de bytes se aproxima de 1 MB. Por exemplo, uma entrada de 999.999 bytes produz "1000.0 kB" em vez do correto "1.0 MB".
  • Lundblad fornece uma versão corrigida do código que lida com esse problema e outros casos extremos. Isso inclui entradas negativas e limites de precisão de double.
  • As principais lições deste artigo são a importância de testar todos os casos extremos, a complexidade da aritmética de ponto flutuante e a necessidade de atribuição adequada ao copiar código.

1 comentários

 
GN⁺ 2023-09-28
Comentários do Hacker News
  • Segundo os comentários, o snippet do StackOverflow mais copiado de todos os tempos tem um defeito.
  • Os comentaristas apontam que o código com defeito usa valores desnecessariamente hardcoded e instruções if, e que isso poderia ser simplificado com busca binária.
  • Alguns comentaristas questionam as duas chamadas de log(), uma chamada de pow() e o uso de ceil() no código, sugerindo que uma abordagem mais simples poderia ser mais eficaz.
  • Existem bibliotecas alternativas para formatar tamanhos em um formato legível por humanos, como a biblioteca PrettySize para Rust e .NET.
  • Alguns desenvolvedores expressam preocupação com o ato de copiar código não confiável do StackOverflow e colá-lo em seus próprios aplicativos.
  • O uso de operações log de ponto flutuante e de divisão aplicada a inteiros no código é criticado por ser excessivamente complexo e propenso a bugs.
  • A discussão destaca a importância de entender os princípios básicos do código, em vez de depender de snippets copiados.
  • Os comentários também refletem sobre a questão mais ampla do compartilhamento de conhecimento em comunidades como o StackOverflow e o potencial de disseminação de informações incorretas.