- 2010'da Andreas Lundblad tarafından yazılan en çok kopyalanan Stack Overflow snippet'inde bir kusur var.
- Bu snippet, bayt sayısını insanın okuyabileceği bir biçimde gösterme sorununa çözüm getiriyor. Örneğin 123.456.789 baytı "123.5 MB" olarak ifade ediyor.
- Lundblad'ın çözümü, uygun soneki (
kB, MB, GB vb.) hesaplamak için döngü yerine logaritma kullanıyor.
- Bu snippet, "GitHub Projelerinde Stack Overflow Kod Snippet'lerinin Kullanımı ve Atıf Verilmesi" başlıklı 2018 tarihli bir araştırmada tespit edildikten sonra en çok kopyalanan parça oldu.
- Araştırma, çoğu kişinin Stack Overflow'dan kod kopyalarken uygun atıf eklemediğini ortaya koydu.
- Lundblad'ın snippet'indeki kusur, bayt sayısı 1 MB'a yaklaştığında bir yuvarlama hatası üretmesi. Örneğin 999.999 bayt girdisi, doğru sonuç olan "1.0 MB" yerine "1000.0 kB" döndürüyor.
- Lundblad, bu tür sorunları ve diğer uç durumları ele alan düzeltilmiş bir kod sürümü sunuyor. Buna negatif girdiler ve
double hassasiyet sınırları da dahil.
- Bu yazıdan çıkarılabilecek temel dersler; tüm uç durumları test etmenin önemi, kayan noktalı aritmetiğin karmaşıklığı ve kod kopyalarken uygun atıf verme gerekliliğidir.
1 yorum
Hacker News yorumları
ififadeleri kullandığını, bunun ikili arama ile sadeleştirilebileceğini belirtiyor.log()çağrısını, birpow()çağrısını veceil()kullanımını sorgulayarak, daha basit bir yaklaşımın daha etkili olabileceğini öne sürüyor.logişlemleri ile tamsayılara uygulanan bölmenin kullanımı, gereğinden fazla karmaşık ve hataya açık olduğu gerekçesiyle eleştiriliyor.