www.wikidata.uk-ua.nina.az
Dublyuvannya kodu termin vidomij iz programuvannya pid yakim rozumiyetsya sho deyaki dilyanki pochatkovogo kodu mozhut zustrichatisya bilsh nizh odin raz yak vseredini odniyeyi tak i v vseredini dekilkoh program Dublyuvannya ye oznakoyu tak zvanogo poganogo kodu abo kodu z zapahom angl Code smell 1 tomu sho same cherez dublyuvannya zbilshuyetsya dovzhina kodu Poslidovnosti dublikativ inodi nazivayut klonami Zmist 1 Prichini za yakih dvi chastini kodu mozhut vvazhatisya dublikatami 2 Zvidki z yavlyayutsya dublikati kodu 3 Problemi do yakih prizvodyat dublikati kodu 4 Poshuk dublikatu kodu 5 Prikladi dublikativ kodu 6 Instrumenti dlya poshuku dublikativ kodu 7 Div takozh 8 Dzherela 9 PosilannyaPrichini za yakih dvi chastini kodu mozhut vvazhatisya dublikatami RedaguvatiPosimvolnij zbig Posimvolnij zbig z ignoruvannyam probilnih simvoliv i komentariv Zbig za leksemami Chastkovij zbig za leksemami Funkcionalnij zbig Zvidki z yavlyayutsya dublikati kodu RedaguvatiPrichini viniknennya dublikativ kodu Programuvannya kopiyuvannyam vstavlennyam pri yakomu dilyanki kodu kopiyuyutsya cherez te sho ce pracyuye U bilshosti vipadkiv taka operaciya vimagaye nevelikih zmin perenesenogo kodu napriklad perejmenuvannya zminnih abo dodavannya vidalennya okremih dilyanok Bazhana funkcionalnist duzhe shozha na vzhe nayavnu v inshij chastini programi i programist stvoryuye kod duzhe blizkij do togo yakij vzhe isnuye 2 Plagiat koli kod prosto kopiyuyetsya bez dotrimannya prav abo bud yakih umov Problemi do yakih prizvodyat dublikati kodu RedaguvatiDublyuvannya kodu ye oznakoyu nizkogo stilyu programuvannya Garnij stil programuvannya zvichajno zasnovanij na povtornomu vikoristanni kodu Mozhe zdavatisya sho vikoristannya dublikativ dozvolit desho priskoriti proces stvorennya programi tak yak programistu ne potribno bude dumati nad tim yak kod vikoristovuyetsya i yak vin mozhe vikoristovuvatisya nadali Odnak problema polyagaye v tomu sho napisannya kodu ce lishe nevelika chastina zhittyevogo ciklu produktu i podalshij suprovid kodu z dublikatami bude zanadto uskladnenim 3 Os kilka problem do yakih prizvodit dublyuvannya kodu Velika kilkist kodu uskladnyuye jogo rozuminnya dublyuvannya kodu chasto prizvodit do stvorennya dovgih povtoryuvanih poslidovnostej kodu yaki vidriznyayutsya lishe kilkoma ryadkami abo simvolami Prihovane znachennya vazhko vloviti riznicyu v povtoryuvanih dilyankah kodu i tomu staye vazhche rozumiti dlya chogo same priznachena ta chi insha chastina kodu Najchastishe yedina riznicya polyagaye v parametrah U cij situaciyi najkrashe vikoristovuvati proceduri i funkciyi Anomaliyi onovlennya dublyuvannya kodu superechit osnovnomu principu teoriyi baz danih Unikajte nadmirnosti Nevikonannya cogo principu prizvodit do anomalij onovlennya yaki silno zbilshuyut vitrati na obslugovuvannya kodu U comu vipadku odnu i tu zh zminu potribno vvesti v usi dublikati I v krashomu vipadku chas vitrachenij na vnesennya zmin i testuvannya kodu zbilshuyetsya proporcijno kilkosti dublikativ A v girshomu deyaki miscya v kodi mozhut buti propusheni i vipravlennya vsih pomilok mozhe zajnyati misyaci abo navit roki Namagajtesya vikoristovuvati biblioteki kodu u takij situaciyi Rozmir fajlu bez zastosuvannya bud yakogo stisnennya fajl pochatkovogo kodu zajmatime bilshe miscya na tverdomu disku Poshuk dublikatu kodu RedaguvatiIsnuye pevna kilkist algoritmiv yaki dozvolyayut vidshukati dublikati kodu Napriklad Algoritm Bejkera 4 Algoritm Rabina Karpa Vikoristannya abstraktnih sintaksichnih derev 5 Vizualne viznachennya dublikativ 6 Zchituvannya matrici klonuvannya 7 8 Prikladi dublikativ kodu RedaguvatiNastupna chastina kodu obchislyuye serednye znachennya masivu cilih chisel extern int array1 extern int array2 int sum1 0 int sum2 0 int average1 0 int average2 0 for int i 0 i lt 4 i sum1 array1 i average1 sum1 4 for int i 0 i lt 4 i sum2 array2 i average2 sum2 4 U comu prikladi dva cikli mozhut buti vineseni v okremu funkciyu int calcAverage int Array of 4 int sum 0 for int i 0 i lt 4 i sum Array of 4 i return sum 4 Vikoristannya ciyeyi funkciyi zvilnit kod vid dublikativ extern int array1 extern int array2 int average1 calcAverage array1 int average2 calcAverage array2 Instrumenti dlya poshuku dublikativ kodu RedaguvatiInstrumenti analizu dublyuvannya kodu vklyuchayut v sebe Atomiq komercijnij produkt 9 Black Duck Software komercijnij produkt seredovishe analizu kodu CCFinder C C Java COBOL Fortran i t d nekomfortnij dlya kompilyaciyi v NE windows operacijnih sistemah 10 Checkstyle en Java CloneAnalyzer C C ta Java tilki yak plagin dlya Eclipse 11 Clone Digger Python ta Java 12 Clone Doctor komercijnij produkt Ada C C C Java COBOL Fortran Python VB net VB6 PHP4 5 PLSQL SQL2011 XML ta bagato inshih mov 13 detektor Copy Paste en vid PMD en Java JSP C C Fortran PHP ConQAT Arhivovano 30 veresnya 2013 u Wayback Machine 14 15 Open Source pidtrimuye ABAP ADA Cobol C C C Java PL I PL SQL Python Text Transact SQL Visual Basic XML JCCD Arhivovano 21 bereznya 2018 u Wayback Machine Gnuchke API dlya znahodzhennya dublikativ kodu dlya Java Open Source pidtrimuye Java ale mozhe buti adaptovanij dlya inshih mov za dopomogoyu ANTLR JPlag Java C C C strukturnij i zvichajnij tekst Pattern Miner CP Miner Arhivovano 15 lipnya 2011 u Wayback Machine komercijnij produkt 16 Simian software Arhivovano 8 listopada 2020 u Wayback Machine Google CodePro Analytix Arhivovano 25 lyutogo 2012 u Wayback Machine Java Eclipse plugin only Div takozh RedaguvatiAbstraktnij princip en Zapahi kodu Don t repeat yourself Spisok instrumentiv dlya statichnogo analizu kodu en Pravilo trohDzherela Redaguvati Spinellis Diomidis The Bad Code Spotter s Guide InformIT com Arhiv originalu za 18 zhovtnya 2012 Procitovano 6 chervnya 2008 Elmar Juergens Florian Deissenboeck Benjamin Hummel Code similarities beyond copy amp paste angl Arhiv originalu za 22 sichnya 2019 Procitovano 2 grudnya 2014 Kapser C Godfrey M W October 2006 Cloning Considered Harmful Considered Harmful 13th Working Conference on Reverse Engineering WCRE angl s 19 28 Arhiv originalu za 4 bereznya 2016 Procitovano 2 grudnya 2014 Brenda S Baker A Program for Identifying Duplicated Code Computing Science and Statistics 24 49 57 1992 Ira D Baxter et al Clone Detection Using Abstract Syntax Trees Arhivovano 10 serpnya 2017 u Wayback Machine Matthias Rieger Stephane Ducasse Visual Detection of Duplicated Code angl Arhiv originalu za 29 chervnya 2006 Yuan Y Guo Y December 2011 CMCD Count Matrix Based Code Clone Detection 2011 18th Asia Pacific Software Engineering Conference angl IEEE s 250 257 Chen X Wang A Y amp Tempero E D 2014 A Replication and Reproduction of Code Clone Detection Studies Arhivovano 15 grudnya 2017 u Wayback Machine In ACSC pp 105 114 Atomiq Code Similarity Finder Arhiv originalu za 17 veresnya 2018 Procitovano 4 lipnya 2019 the archive of CCFinder Official Site Arhiv originalu za 5 bereznya 2022 Procitovano 18 bereznya 2022 CloneAnalyzer Arhiv originalu za 5 kvitnya 2017 Procitovano 18 bereznya 2022 Clone Digger Instrument dlya mov Python i Java Vikonuye poshuk dublikativ na rivni abstrakciyi sintaksichnogo dereva Clone Doctor Software Clone Detection and Reporting Arhiv originalu za 5 grudnya 2019 Procitovano 1 grudnya 2019 E Juergens F Deissenboeck B Hummel A Workbench for Clone Detection Research Arhiv originalu za 5 bereznya 2016 Procitovano 9 chervnya 2013 E Juergens F Deissenboeck B Hummel S Wagner Do Code Clones Matter Arhiv originalu za 9 serpnya 2017 Procitovano 9 chervnya 2013 CP Miner A Tool for Finding Copy paste and Related Bugs in Operating System Code Arhivovano 5 lyutogo 2009 u Wayback Machine by Zhenmin Li Shan Lu Suvda Myagmar and Yuanyuan Zhou Posilannya RedaguvatiThe University of Alabama at Birmingham Code Clones Literature Poshuk dublikativ u pochatkovomu kodi na Java Simian instrument pidtrimuye bagato mov Poshuk dublikativ v C VB Net ASPX Ruby Python Java C C ActionScript or XAML Arhivovano 7 lipnya 2011 u Wayback Machine Otrimano z https uk wikipedia org w index php title Dublyuvannya kodu amp oldid 40431853