Másolás-beillesztés programozás

A copy-paste programozás gyakori antipattern. ami egy duplikált kód megjelenéséhez vezet, általában nagy és komplex a felfogáshoz. Az ismétlődő kódelemek továbbítják az eredeti kódban elkövetett hibát, és több ismétlés bonyolítja a hiba korrekcióját az [1] [3] másolatokban.

A programozók, akik gyakran más programkódot másolnak, gyakran nem értik részlegesen vagy teljesen. Mint ilyen, a probléma inkább a tapasztalatlanságuk és a kitartás hiánya miatt merül fel, mint a másolás tényéből. A másolt kódokat gyakran barátaiktól, kollégáiktól, online fórumokból veszik. a tanároktól vagy a programozásból származó könyvektől. Az eredmény fenyegeti az inkoherens stíluskészletet, és tartalmazhat redundáns kódot, amely megoldja a nem létező problémákat.

További probléma az, hogy a hibákat egyszerűen a másolandó kód is tartalmazza. A különböző forráskódokban használt tervezési technikák. Lehet, hogy nem elfogadhatóak, ha egy új környezetbe keverednek.

Ez a kód szintén véletlenül zavaros lehet. mivel a másolást követően a változók, osztályok, funkciók stb. nevei általában változatlanok maradnak, még akkor is, ha azok célja egy teljesen új kontextusban van [4].

Az esetlegesen feledésbe merült javítások a másolás-pasztás módszerrel történő programozás egyik leginkább kellemetlen és gyakori problémája

A könyvtárak használata

A copy-and-paste programozást gyakran olyan tapasztalt programozók használják, akik könyvtáraikkal rendelkeznek jól bevált és használatra kész részletekkel és általános feladatokhoz igazított általános algoritmusokkal [2].

Az általános algoritmus több módosított példányának létrehozása helyett az objektumorientált megközelítés azt sugallja, hogy az algoritmust egy rejtett osztályba sorolt ​​osztályba vontuk. Ez az osztály rugalmasan van kialakítva, teljes mértékben támogatja az öröklést és a túlterhelést. Ez lehetővé teszi, hogy a hívó kód egy általánosított kóddal kommunikáljon, nem több vagy több megváltozott [9]. Ahogy a szükséges funkciók kibővülnek, a könyvtár is növekszik (a hátrányos kompatibilitás megőrzésével). Tehát, ha az eredeti algoritmus korrigált hiba, akkor minden algoritmust és könyvtárat használó szoftver nyer.

Az elágazás normális folyamat, amikor nagyméretű csapatok szoftverét fejlesztik. Lehetővé teszi párhuzamos fejlesztést az ágazatokban, és ennélfogva a fejlesztési ciklusok lerövidítését. A klasszikus elágazás a következő jellemzőkkel bír:

  • A verzióvezérlő rendszer ellenőrzi. támogatja az elágazást
  • Az ágakat a fejlesztés befejezése után újra integrálják

Programozási eljárás másolás-beillesztés - egy kevésbé formális alternatívája a klasszikus elágazást, gyakran használják abban az esetben, ha azt feltételezzük, hogy az ág fog térni (kód különbség az ágak nőnek) az idő múlásával, egyre több és több, mint abban az esetben, elosztása egy új szoftver terméket a meglévőt.

Az új termék elszigetelésének módjaként a copapastnak van néhány előnye. Mivel egy új termék kifejlesztése nem változtatja meg a meglévőt:

  • Egy létező termék regressziós tesztelésére nincs szükség;
  • Az idő a minőségbiztosításhoz kapcsolódik;
  • Csökkentett idő a piacra;
  • Nem áll fenn az új hibák kijavítása a meglévő termékben (ami sértheti a meglévő felhasználói bázist).
  • Ha egy új, eredeti termékek között nem annyira, mint az várható volt, akkor valószínű, hogy szembe kell támogatni két adatbázisforrást (költségnövekedés kétszer), amelyek lényegében ugyanazt a terméket. Ez költséges refactoringhez és kézi egyesítéshez vezethet a jövőben;
  • A két kódbázis létezése növeli a mindkét termék számára kívánatos változások végrehajtásához szükséges időt, ami viszont növeli a piacra kerülési időt. Igazi körülmények között ez elpusztíthat minden korábban nyert időt.

A CP megközelítés másik alternatívája a moduláris megközelítés:

  • Kezdetben a két termék között megosztandó kód vagy kód megjelenik a könyvtárakban vagy modulokban;
  • A létrehozott könyvtárak használata az új termék kifejlesztésének alapja;
  • Ha a termék egy harmadik, negyedik, ötödik, stb. Származékos változatát tervezik, akkor ez a megközelítés sokkal erősebb, mint a másolópaszta, mivel drasztikusan lerövidíti bármely további termék fejlesztési ciklusát a második után [10].

A probléma ismétlődő feladata vagy változata

A CP programozás egyik legszélesebb formája az ismétlődő kód megjelenése. egy változó függvényében ismétlődő feladatot vagy a fő feladat változását hajtja végre. A korábban létrehozott másolatok kisebb változásokkal. A hatások a következők:

A megközelítés szándékos kiválasztása

A programozási kifejezések és a tervezési minták használata hasonló a másoló-paszta megközelítéshez, mert a sablonkódot is használják. Egyes esetekben ez egy töredékkel fejezhető ki. amely igény szerint beillesztésre kerül a kódba, bár gyakran egyszerűen "hívják" a programozó elméjéből. Más esetekben az idiómák használata nem csökkenthető a sablonkódra. A legtöbb esetben azonban, ha a idióma lehet csökkenteni a kódot, akkor vagy túl hosszú (ami kell rendelni egy funkciót), vagy túl rövid (úgy, hogy lehetőség van a közvetlen tárcsázáshoz).

Egy megközelítés elfogadható alkalmazásának egy egyszerű példája lehet a huroknak, amely úgy néz ki, mint (int i = 0; i! = N; ++ i) <>. A hurok használatára szolgáló kód példája lehet:

A hurok kódja a következő kódrészlet segítségével generálható (a változók típusainak és neveinek meghatározása):

Sok programozó gyakran használja a megközelítést, mert nem akar átírni a vonalat, amely csak az előzőhöz képest csak néhány szimbólummal különbözik (például egy olyan funkciót hív meg két hasonló objektumhoz, amelyek neve kissé eltér egymástól). Az előző sor (a billentyűparancsokkal együtt) ismétlődése gyorsabb, mint újraírni. De a hiba valószínűsége nem csökken [14]. különösen az utolsó sort [15].

Van egy tanulmány [16]. a programozás "dekriminalizációjára" irányul a másolás-paszta módszerével - Az alprogramozási nyelv nyelve. Meg kell jegyezni, hogy ebben a modellben a másolópaszta az interakció alapmodellje, ezért nem tekinthető antipatternnek.

Kapcsolódó cikkek