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

4 kommentarer.  Hop til debatten
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.
6. januar kl. 10:15
errorÆ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
Debatten
Log ind for at deltage i debatten.
settingsDebatindstillinger
4
8. januar 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 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 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 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.