Кіріспе

Көшіріп-жабыстыру бағдарламалау, кейде жай ғана жабыстыру деп те аталады, – көшіру және жабыстыру операциялары арқылы жасалатын, өте қайталанатын компьютерлік бағдарламалау кодын жасау. Бұл, көбінесе, сынды білдіретін термин; осы терминді қолданушылар бағдарламалау шеберлігінің жетіспеуін және абстракция құру қабілетінің болмауын жиі меңзейді. Бұл технологиялық шектеулердің салдары болуы мүмкін (мысалы, жеткілікті мүмкіндік бермейтін даму ортасы), себебі әдетте оның орнына кіші бағдарламалар немесе кітапханалар қолданылуы керек. Дегенмен, көшіру және жабыстыру бағдарламалауды қабылдауға немесе қажет деп санауға болатын жағдайлар бар, мысалы, бастапқы код үлгілері, циклды ашу (компилятор автоматты түрде қолдамаған жағдайда) немесе белгілі бір бағдарламалау ерекшеліктері үшін, және кейбір код редакторлары оны код фрагменттері түрінде қолдайды.

Қайталанатын тапсырмалар немесе тапсырманың түрлендірулері

Көшіріп-қою бағдарламалаудың ең зиянды түрлерінің бірі қайталанатын міндеттерді орындайтын кодта немесе кейбір айнымалыларға байланысты бірдей негізгі міндеттің өзгешеліктерінде кездеседі. Әрбір мысал жоғарыдан көшіріліп, шағын өзгерістермен қайтадан орналастырылады. Зиянды әсерлері: Көшіріп-қою тәсілі көбінесе үлкен әдістерге (нашар кодтың белгісі) алып келеді. Әрбір мысал кодтың дубликатын жасайды, бұрынғы бөлімдерде талқыланған барлық проблемалармен, бірақ әлдеқайда кең ауқымда. Көптеген дубликаттар жиі кездеседі; жүздегені болуы мүмкін. Атап айтқанда, қателерді түзету мұндай кодта өте қиын және қымбатқа түседі. Мұндай кодтың оқылуы да қиын, себебі әрбір қайталанудың арасындағы нақты айырмашылықты анықтау қиын. Бұл кодты қайта қарау тәуекелдері мен құнына тікелей әсер етеді. Процедуралық бағдарламалау үлгісі қайталанатын міндеттерге көшіріп-қою тәсілін қатаң түрде қолдамайды. Процедуралық үлгіде қайталанатын міндеттер үшін ең қолайлы тәсіл – міндетті бір рет орындау үшін функция немесе кіші бағдарлама жасау; бұл кіші бағдарлама содан кейін ата бағдарламамен қайталап немесе тіпті жақсырақ, циклдық құрылымды пайдаланып шақырылады. Мұндай код "жақсы жіктелінген" деп аталады және оны оқу оңай және кеңейтуге ыңғайлы деп ұсынады. Бұл жағдайда қолданылатын жалпы ереже – "қа қайталама".

Қалайса жасалған жоба

Көшіріп-жапсыру бағдарламалау кейде қолданылатын бағдарламалау тәсілі ретінде қабылданады. Мұндай жағдай көбінесе сынып жарияланымдары немесе стандартты кітапханаларды импорттау сияқты жиі қолданылатын кодтарда, немесе қолданыстағы код үлгісін (бос мазмұнымен немесе қара функцияларымен) негіз ретінде пайдалануда кездеседі. Бағдарламалау идиомалары мен дизайн үлгілерін қолдану көшіріп-жапсыру бағдарламалауға ұқсас, себебі олар да формулалық кодты пайдаланады. Кейбір жағдайларда, мұны код фрагменті ретінде жазуға болады, содан кейін қажет болған кезде оны жапсыруға болады, бірақ көбінесе бағдарламашы оны жадынан еске түсіреді. Басқа жағдайларда идиомаларды код үлгісіне дейін тоғыту мүмкін болмайды. Дегенмен, көп жағдайда, тіпті идиоманы кодқа дейін тоғытуға болса, ол функцияға абстракцияланатын немесе тікелей теруге жететіндей қысқа болады. Subtext бағдарламалау тілі – кесіп-жапсыруды «заңдастыруға» бағытталған ғылыми-зерттеу жобасы. Осы тілді пайдалану арқылы кесіп-жапсыру негізгі өзара әрекеттесу моделі болып табылады, сондықтан ол анти-үлгі саналмайды.