Shembulli më i popullarizuar i kodit Java në StackOverflow ka një gabim

Më të njohurit Shembull i kodit Java, publikuar në StackOverflow, perfundoi me një gabim që çon në daljen e një rezultati të pasaktë në kushte të caktuara. Kodi në fjalë është postuar në vitin 2010 dhe ka grumbulluar më shumë se një mijë rekomandime, dhe gjithashtu ka qenë e kopjuar në shumë projekte dhe shfaqet në depo në GitHub rreth 7 mijë herë. Vlen të përmendet se gabimi nuk u gjet nga përdoruesit që kopjuan këtë kod në projektet e tyre, por nga autori origjinal i këshillës.

Kodi në fjalë e konvertoi madhësinë e bajtit në një formë të lexueshme, për shembull duke konvertuar 110592 në "110.6 kB" ose "108.0 KiB". Kodi u propozua si një version i optimizuar nga logaritmi i këshillave të propozuara më parë, në të cilin vlera u përcaktua bazuar në ndarjen vijuese të vlerës origjinale në një lak me 1018, 1015, 1012, 1019.
106, 103 dhe 100, për sa kohë që pjesëtuesi është më i madh se vlera origjinale e bajtit. Për shkak të llogaritjeve të ngadalta në versionin e optimizuar (mbytje me vlerë të gjatë), rezultati gjatë përpunimit të numrave shumë të mëdhenj (ekzabajt) nuk korrespondonte me realitetin.

Autori i këshillës u përpoq gjithashtu të tërheqë vëmendjen për problemin e kopjimit të shembujve pa përmendur burimin dhe pa treguar licencën. Sipas të dhënave të mëparshme kryer kërkime 46% e zhvilluesve kopjuan kodin nga StackOverflow pa atribut, 75% nuk ​​ishin në dijeni se kodi ishte i licencuar sipas CC BY-SA dhe 67% nuk ​​ishin të vetëdijshëm se kjo kërkonte atribuim.

Mbi të dhëna Sipas një studimi tjetër, kopjimi i shembujve të kodit përfshin jo vetëm rrezikun e gabimeve në kod, por edhe dobësitë. Për shembull, pas analizimit të 72483 shembujve të kodit C++ në StackOverflow, studiuesit identifikuan dobësi serioze në 69 shembuj (që është 0.09%) të përfshirë në listën e rekomandimeve më të njohura. Pas analizimit të pranisë së këtij kodi në GitHub, u zbulua se kodi i cenueshëm i kopjuar nga StackOverflow ishte i pranishëm në 2859 projekte.

Burimi: opennet.ru

Shto një koment