- 2010 में Andreas Lundblad द्वारा लिखा गया सबसे ज़्यादा कॉपी किया गया StackOverflow snippet दोषपूर्ण है।
- यह snippet bytes की संख्या को इंसानों के पढ़ने लायक फ़ॉर्मैट में दिखाने की समस्या का समाधान है। उदाहरण के लिए, 123,456,789 bytes को "123.5 MB" के रूप में दिखाना।
- Lundblad का समाधान loop की जगह log का उपयोग करके सही suffix (kB, MB, GB आदि) की गणना करता है।
- इस snippet को 2018 के एक अध्ययन, जिसका शीर्षक "GitHub प्रोजेक्ट्स में Stack Overflow code snippets का उपयोग और attribution" है, में पहचाने जाने के बाद सबसे ज़्यादा कॉपी किया गया पाया गया।
- अध्ययन में पाया गया कि अधिकतर लोग Stack Overflow से code कॉपी करते समय उचित attribution शामिल नहीं करते।
- Lundblad के snippet में दोष यह है कि जब bytes की संख्या 1 MB के करीब पहुँचती है, तो rounding error होता है। उदाहरण के लिए, 999,999 bytes का input सही "1.0 MB" के बजाय "1000.0 kB" देता है।
- Lundblad इस तरह की समस्या और अन्य extreme cases को संभालने वाला code का एक संशोधित version देता है। इसमें negative input और double की precision limits शामिल हैं।
- इस लेख से मिलने वाले मुख्य सबक हैं: सभी extreme cases को test करने का महत्व, floating-point arithmetic की जटिलता, और code कॉपी करते समय उचित attribution की आवश्यकता।
1 टिप्पणियां
Hacker News की राय
ifstatements का उपयोग किया गया है, जबकि इसे binary search से सरल बनाया जा सकता है।log()के दो calls,pow()का एक call, औरceil()के उपयोग पर सवाल उठाते हैं, और सुझाव देते हैं कि एक अधिक सरल तरीका ज़्यादा प्रभावी हो सकता है।logoperations और integers पर division के उपयोग को आवश्यकता से अधिक जटिल और bugs के प्रति संवेदनशील बताया गया है।