Plugin finder copy-paste-kode i udviklingsværktøj

6. januar 2022 kl. 10:154
Plugin finder copy-paste-kode i udviklingsværktøj
Illustration: Bigstock/REDPIXEL.PL.
Man må ikke kopiere kode, men vi gør det allesammen alligevel. Nu kan udvidelse til Jetbrains Idea finde dubletterne.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

Vi ved det godt. Man må ikke kopiere kode fra ét sted i ens program til et andet sted.

I stedet skal koden omskrives - refaktoreres - så funktionaliteten generaliseres og derefter anvendes begge steder, med behørig parametrisering.

I hvert fald i teorien. Men virkeligheden er ikke altid som i lærebøgerne. Hvem af os har ikke lige fitlihuttet en ny feature med lidt copy-paste-kung fu. Bare indrøm det, kære læser.

Nu har værktøjsfirmaet Jetbrains og HSE University i Moskva gjort noget ved unoderne. Det skriver The Register.

Artiklen fortsætter efter annoncen

Resultatet er en udvidelse til værktøjet Jetbrains Idea.

Udvidelsen, med det sigende navn Anticopypaster, overvåger kopiering og indsættelse, der finder sted i udviklingsværktøjet.

Så snart et kodefragment indsættes, kontrollerer udvidelsen om der er tale om en dublet. Men det er smartere end som så.

Hvis der er tale om kopiering, undersøger en machine learning-model, en 'gradient boosting classifier', hvorvidt koden er egnet til værktøjets indbyggede Extract Method-refaktorering. Hvis det er tilfældet, foreslås brugeren at udføre refaktoreringen.

4 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
4
8. januar 2022 kl. 00:06

Evnen til at generalisere og opdage mønstre i funktionalitet er noget af det vigtigste i softwareudvikling. Jeg mener også det er en bredere færdighed som afhænger af IQ.

Nogle evner det simpelthen ikke.
Typisk har de også problemer med definitioner og navngivning. Deres programmer og systemer vil altid være dårlige.

Modsat: At vide hvornår man i stedet skal kopiere funktionaliteten af hensyn til mindsket kompleksitet er en del af kunsten i softwareudvikling.

3
7. januar 2022 kl. 14:50

Desuden skal man passe på med for meget generalisering, og et stort nedarvningshieraki, da det meget nemt kan modarbejde en.

Generalisering kan fint laves uden nedarvning. Nedarvning er en teknik der passer til få problemstillinger. Generalisering til mange flere. Når man laver store systemer der skal leve i lang tid så er manglende generalisering i mine øjne den største årsag til at koden sander til.

I øvrigt er brug af generics/templates/polymorphic types ved implementation af funktioner i mine øjne med til at gøre koden mere læsbar og nemmere at teste. Det hjælper programmøren til at generalisere hans metoder og gør det nemmere for andre at forstå hvad der sker fordi man ikke fedter alt mulig ind i hinanden.

2
6. januar 2022 kl. 12:13

Folk der bruger vertical slicing får nok ikke installeret det plugin.

Desuden skal man passe på med for meget generalisering, og et stort nedarvningshieraki, da det meget nemt kan modarbejde en.

1
6. januar 2022 kl. 11:37

Jeg ville nok foretrække, at jeg fik det rap over fingrene, når jeg bad om det. Når jeg laver en copy-paste, er det ofte for at lave noget nyt og anderledes med udgangspunkt i noget, der ligner. I et system hvor OOP ikke er "så udbredt". Et alt for emsigt værktøj vil slå mig ud af sporet.