- 2010년에 Andreas Lundblad가 작성한 가장 많이 복사된 StackOverflow 스니펫에는 결함이 있다.
- 이 스니펫은 바이트 수를 사람이 읽을 수 있는 형식으로 출력하는 문제의 해결책이다. 예를 들어, 123,456,789 바이트를 "123.5 MB"로 표현하는 것이다.
- Lundblad의 해결책은 루프 대신 로그를 사용하여 적절한 접미사(kB, MB, GB 등)를 계산한다.
- 이 스니펫은 "GitHub 프로젝트에서의 Stack Overflow 코드 스니펫의 사용과 출처 표시"라는 제목의 2018년 연구에서 확인된 후 가장 많이 복사되었다.
- 연구에서는 대부분의 사람들이 Stack Overflow에서 코드를 복사할 때 적절한 출처 표시를 포함하지 않는다는 것을 발견했다.
- Lundblad의 스니펫의 결함은 바이트 수가 1 MB에 가까워질 때 반올림 오류가 있다. 예를 들어, 999,999 바이트의 입력은 올바른 "1.0 MB" 대신 "1000.0 kB"를 결과로 낸다.
- Lundblad는 이와 같은 문제와 다른 극단적인 경우를 처리하는 수정된 코드 버전을 제공한다. 이에는 음수 입력과 double의 정밀도 제한이 포함된다.
- 이 기사에서 얻을 수 있는 주요 교훈은 모든 극단적인 경우를 테스트하는 것의 중요성, 부동소수점 산술의 복잡성, 그리고 코드를 복사할 때 적절한 출처 표시의 필요성이다.
댓글과 토론