3 poin oleh GN⁺ 2023-09-28 | 1 komentar | Bagikan ke WhatsApp
  • Cuplikan yang paling banyak disalin, ditulis oleh Andreas Lundblad pada 2010, memiliki cacat.
  • Cuplikan ini adalah solusi untuk masalah menampilkan jumlah byte dalam format yang mudah dibaca manusia. Misalnya, menampilkan 123,456,789 byte sebagai "123.5 MB".
  • Solusi Lundblad menggunakan log alih-alih loop untuk menghitung sufiks yang tepat (kB, MB, GB, dan seterusnya).
  • Cuplikan ini menjadi yang paling banyak disalin setelah diidentifikasi dalam penelitian tahun 2018 berjudul "Penggunaan dan atribusi cuplikan kode Stack Overflow dalam proyek GitHub".
  • Penelitian tersebut menemukan bahwa kebanyakan orang tidak menyertakan atribusi yang semestinya saat menyalin kode dari Stack Overflow.
  • Cacat pada cuplikan Lundblad adalah adanya kesalahan pembulatan ketika jumlah byte mendekati 1 MB. Misalnya, input 999,999 byte menghasilkan "1000.0 kB" alih-alih "1.0 MB" yang benar.
  • Lundblad menyediakan versi kode yang telah diperbaiki untuk menangani masalah seperti ini dan kasus ekstrem lainnya. Ini mencakup input negatif dan batas presisi double.
  • Pelajaran utama dari artikel ini adalah pentingnya menguji semua kasus ekstrem, kompleksitas aritmetika floating-point, dan perlunya atribusi yang semestinya saat menyalin kode.

1 komentar

 
GN⁺ 2023-09-28
Komentar Hacker News
  • Menurut komentar-komentar tersebut, snippet StackOverflow yang paling banyak disalin sepanjang masa ternyata memiliki cacat.
  • Para komentator menunjukkan bahwa kode yang cacat itu memakai nilai hardcoded yang tidak perlu dan pernyataan if, padahal bisa disederhanakan dengan pencarian biner.
  • Beberapa komentator mempertanyakan dua pemanggilan log(), satu pemanggilan pow(), dan penggunaan ceil() dalam kode itu, serta menyarankan bahwa pendekatan yang lebih sederhana mungkin lebih efektif.
  • Ada pustaka alternatif untuk memformat ukuran ke dalam bentuk yang mudah dibaca manusia, seperti pustaka PrettySize untuk Rust dan .NET.
  • Sejumlah pengembang menyatakan kekhawatiran tentang tindakan menyalin kode yang tidak dapat diandalkan dari StackOverflow lalu menempelkannya ke aplikasi mereka sendiri.
  • Penggunaan operasi log floating-point dan pembagian yang diterapkan pada bilangan bulat dalam kode itu dikritik karena terlalu rumit dan rentan terhadap bug.
  • Diskusi ini menekankan pentingnya memahami prinsip-prinsip dasar kode, alih-alih bergantung pada snippet yang disalin.
  • Komentar-komentar itu juga merefleksikan isu yang lebih luas tentang berbagi pengetahuan di komunitas seperti StackOverflow dan potensi penyebaran misinformasi.