Кіріспе
Көшіріп-жабыстыру бағдарламалау, кейде жай ғана жабыстыру деп те аталады, – көшіру және жабыстыру операциялары арқылы жасалатын, өте қайталанатын компьютерлік бағдарламалау кодын жасау. Бұл, көбінесе, сынды білдіретін термин; осы терминді қолданушылар бағдарламалау шеберлігінің жетіспеуін және абстракция құру қабілетінің болмауын жиі меңзейді. Бұл технологиялық шектеулердің салдары болуы мүмкін (мысалы, жеткілікті мүмкіндік бермейтін даму ортасы), себебі әдетте оның орнына кіші бағдарламалар немесе кітапханалар қолданылуы керек. Дегенмен, көшіру және жабыстыру бағдарламалауды қабылдауға немесе қажет деп санауға болатын жағдайлар бар, мысалы, бастапқы код үлгілері, циклды ашу (компилятор автоматты түрде қолдамаған жағдайда) немесе белгілі бір бағдарламалау ерекшеліктері үшін, және кейбір код редакторлары оны код фрагменттері түрінде қолдайды.
Copy and paste programming, sometimes referred to as just pasting, is the production of highly repetitive computer programming code, as produced by copy and paste operations. It is primarily a pejorative term; those who use the term are often implying a lack of programming competence and ability to create abstractions. It may also be the result of technology limitations (e. g., an insufficiently expressive development environment) as subroutines or libraries would normally be used instead. However, there are occasions when copy and paste programming is considered acceptable or necessary, such as for boilerplate, loop unrolling (when not supported automatically by the compiler), or certain programming idioms, and it is supported by some source code editors in the form of snippets.
Қайталанатын тапсырмалар немесе тапсырманың түрлендірулері
Көшіріп-қою бағдарламалаудың ең зиянды түрлерінің бірі қайталанатын міндеттерді орындайтын кодта немесе кейбір айнымалыларға байланысты бірдей негізгі міндеттің өзгешеліктерінде кездеседі. Әрбір мысал жоғарыдан көшіріліп, шағын өзгерістермен қайтадан орналастырылады. Зиянды әсерлері: Көшіріп-қою тәсілі көбінесе үлкен әдістерге (нашар кодтың белгісі) алып келеді. Әрбір мысал кодтың дубликатын жасайды, бұрынғы бөлімдерде талқыланған барлық проблемалармен, бірақ әлдеқайда кең ауқымда. Көптеген дубликаттар жиі кездеседі; жүздегені болуы мүмкін. Атап айтқанда, қателерді түзету мұндай кодта өте қиын және қымбатқа түседі. Мұндай кодтың оқылуы да қиын, себебі әрбір қайталанудың арасындағы нақты айырмашылықты анықтау қиын. Бұл кодты қайта қарау тәуекелдері мен құнына тікелей әсер етеді. Процедуралық бағдарламалау үлгісі қайталанатын міндеттерге көшіріп-қою тәсілін қатаң түрде қолдамайды. Процедуралық үлгіде қайталанатын міндеттер үшін ең қолайлы тәсіл – міндетті бір рет орындау үшін функция немесе кіші бағдарлама жасау; бұл кіші бағдарлама содан кейін ата бағдарламамен қайталап немесе тіпті жақсырақ, циклдық құрылымды пайдаланып шақырылады. Мұндай код "жақсы жіктелінген" деп аталады және оны оқу оңай және кеңейтуге ыңғайлы деп ұсынады. Бұл жағдайда қолданылатын жалпы ереже – "қа қайталама".
The copy and paste approach often leads to large methods (a bad code smell). Each instance creates a code duplicate, with all the problems discussed in prior sections, but with a much greater scope. Scores of duplications are common; hundreds are possible. Bug fixes, in particular, become very difficult and costly in such code. Such code also suffers from significant readability issues, due to the difficulty of discerning exactly what differs between each repetition. This has a direct impact on the risks and costs of revising the code. The procedural programming model strongly discourages the copy and paste approach to repetitive tasks. Under a procedural model, a preferred approach to repetitive tasks is to create a function or subroutine that performs a single pass through the task; this subroutine is then called by the parent routine, either repetitively or better yet, with some form of looping structure. Such code is termed "well decomposed", and is recommended as being easier to read and more readily extensible. The general rule of thumb applicable to this case is "don't repeat yourself".
Қалайса жасалған жоба
Көшіріп-жапсыру бағдарламалау кейде қолданылатын бағдарламалау тәсілі ретінде қабылданады. Мұндай жағдай көбінесе сынып жарияланымдары немесе стандартты кітапханаларды импорттау сияқты жиі қолданылатын кодтарда, немесе қолданыстағы код үлгісін (бос мазмұнымен немесе қара функцияларымен) негіз ретінде пайдалануда кездеседі. Бағдарламалау идиомалары мен дизайн үлгілерін қолдану көшіріп-жапсыру бағдарламалауға ұқсас, себебі олар да формулалық кодты пайдаланады. Кейбір жағдайларда, мұны код фрагменті ретінде жазуға болады, содан кейін қажет болған кезде оны жапсыруға болады, бірақ көбінесе бағдарламашы оны жадынан еске түсіреді. Басқа жағдайларда идиомаларды код үлгісіне дейін тоғыту мүмкін болмайды. Дегенмен, көп жағдайда, тіпті идиоманы кодқа дейін тоғытуға болса, ол функцияға абстракцияланатын немесе тікелей теруге жететіндей қысқа болады. Subtext бағдарламалау тілі – кесіп-жапсыруды «заңдастыруға» бағытталған ғылыми-зерттеу жобасы. Осы тілді пайдалану арқылы кесіп-жапсыру негізгі өзара әрекеттесу моделі болып табылады, сондықтан ол анти-үлгі саналмайды.