Apakah sebagian besar programmer menyalin dan menempelkan kode? [Tutup]

48

Saya belajar sejak awal bahwa memotong & menempel kode orang lain membutuhkan waktu lebih lama daripada menulisnya sendiri. Menurut pendapat saya kecuali Anda benar-benar memahaminya, cut & paste kode mungkin akan memiliki masalah yang akan menjadi mimpi buruk untuk diselesaikan.

Jangan salah paham, maksud saya menemukan kode orang lain dan belajar darinya sangat penting, tetapi kami tidak hanya menempelkannya ke dalam aplikasi kami. Kami menulis ulang yang konsep-konsep dalam aplikasi kita.

Tapi saya terus-menerus mendengar tentang orang-orang yang memotong & menempel, dan mereka membicarakannya seperti itu adalah praktik umum. Saya juga melihat komentar oleh orang lain yang menunjukkan itu adalah praktik umum.

Jadi, apakah sebagian besar programmer memotong & menempel kode?

John MacIntyre
sumber
10
Bahkan jika saya tahu bagaimana melakukan sesuatu, saya akan sering mencari contoh kode untuk praktik terbaik. Setelah Anda dapat membaca kode, Anda dapat dengan cepat mengetahui apakah yang Anda temukan lebih baik daripada apa yang Anda rencanakan.
Nicole
Ada pertanyaan tentang cut & paste baru-baru ini. Mengapa Anda tidak memeriksanya ?
Naurgul
Jika saya memahaminya.
johnny

Jawaban:

46

Dua kasus umum:

Dari satu proyek ke proyek lain:

Sebagian besar programmer memotong dan menempelkan kode dalam kapasitas ini. Mereka mungkin menemukan proyek sebelumnya atau sesuatu yang daring dan menyalin / menempelkannya dengan tepat atau menyalin / menempel dan mengubahnya. Saya pikir praktik ini biasanya baik-baik saja. Ini sangat baik ketika kode terbukti. (Contoh: Beberapa jenis objek utilitas dari proyek sebelumnya yang bekerja dengan baik, atau mungkin dari blog dengan beberapa perubahan yang diperlukan). Di mana ini bisa menjadi buruk, adalah ketika Anda menyalin kode yang tidak Anda mengerti, atau di mana kode itu buruk, atau di mana ada solusi alternatif yang jauh lebih baik daripada kode yang Anda tempel.

Di dalam proyek yang sama: Menyalin dan menempel di proyek yang sama biasanya bukan ide yang baik. Ini adalah bau yang buruk bahwa kode yang sedang disalin seharusnya hanya dalam metode / kelas di suatu tempat dan dipanggil berulang kali. Ada beberapa pengecualian untuk ini, tetapi umumnya programmer harus berpikir: " Apakah ada cara saya bisa parameterisasi kode ini yang saya salin? ".

jzd
sumber
5
Umumnya ini benar, kecuali jika Anda menulis kode yang memerlukan anti-pola, seperti halnya dengan kode antitampering, seperti untuk lisensi perangkat lunak.
Rob Perkins
+1 Ya, saya sudah melakukan kedua hal ini. Saya belum pernah melakukan cut & paste kode dari dalam proyek yang sama untuk waktu yang lama (walaupun saya akan mengaku jarang melakukannya di bawah tekanan ekstrim dengan bug log untuk kembali ke sana). Adapun kelas utilitas, proyek saya untuk menyalin proyek sekarang terisolasi untuk menyalin file lengkap.
John MacIntyre
2
Saat menulis kode database, saya biasanya memotong dan menempelkannya ke fungsi baru dan memodifikasi sql itu sendiri untuk mendapatkan hasil yang diinginkan dan tidak perlu khawatir dengan mengetik ulang beberapa prasyarat untuk membuat panggilan basis data tersebut. Meski secara umum saya setuju dengan kedua pernyataan tersebut.
Chris
1
@ Chris: Menyalin dan memodifikasi jantungnya sangat berbeda dari sekadar menempelkannya apa adanya.
Loren Pechtel
1
@ Loren Pechtel: Meskipun demikian masih melibatkan tindakan menyalin dan menempel kode.
Chris
37

Sebagian besar programmer melakukannya, tetapi itu tidak berarti Anda harus melakukannya

Salah satu mantra pemrograman saya adalah: "Jika saya menyalin dan menempelkan kode, saya melakukan sesuatu yang salah" . Intinya, KERING .

Saya pikir itu harus jelas bahwa penggunaan kembali kode berarti menggunakan kode sebagai sumber daya, bukan kode berulang. Terkadang saya menyalin dan menempelkan kode kode saya sendiri, pada kebanyakan kasus saya diakhiri dengan kode pelat boiler atau hal-hal yang terlihat sangat mirip.

Setelah menginvestasikan lebih banyak waktu dengan kode itu kemudian saya berakhir dengan yang berikut:

  • Sebuah komponen (lihat juga: pemisahan keprihatinan )
  • Saya dapat menggunakan refleksi untuk membuat hal-hal lebih sederhana, lebih bersih dan lebih mudah untuk diulang kembali di masa depan.
  • Desain yang lebih baik , karena meskipun berhasil, mengapa tidak mengulanginya lagi setelah Anda mempelajari pelajaran ?.
  • Pola yang saya bisa abstraksi, berubah menjadi komponen pustaka, dan hapus kode duplikat.

Dapat diperdebatkan apakah kita harus menyalin atau menempelkan kode karena klien / bos tidak peduli (setidaknya secara langsung dan dalam jangka pendek) dan Anda mungkin berakhir dengan hasil yang sama, tetapi masalahnya benar-benar muncul ketika itu menyebabkan bug, kehilangan modularitas, dan akhirnya, pemeliharaan neraka.

Apa yang harus Anda lakukan: refactor ASAP

Tidak ada yang menulis kode yang sempurna, bahkan jika itu berfungsi, bahkan ketika Anda tidak menyalin & menempel dan itu adalah kode Anda sendiri, jika Anda tidak cukup puas dengan itu hanya menulis catatan di komentar (mis. Blokir "@todo") untuk mengingatkan diri Anda sendiri apa yang harus refactor dan mengapa ... bahkan jika Anda tidak refactor sendiri, itu mungkin menjadi perbedaan antara kebahagiaan dan frustrasi total untuk pengelola.

Akhirnya, Anda akan berakhir dengan kode yang bagus pada akhirnya, bahkan jika Anda menyalin dan menempel.

Kode yang baik

melalui XKCD

dukeofgaming
sumber
15
Saya sering melihat "refactor later" berubah menjadi "refactor never", atau bahkan lebih buruk lagi "Saya sangat menyukai SUCKER lain yang dapat melakukan refactor dan memperbaiki kode saya yang hampir-tetapi-tidak-cukup-ok". Saya orang yang beriman melakukannya di muka, karena kalau tidak seperti besok - itu tidak pernah datang.
cepat,
1
@quickly_now - re: "Saya seperti pukulan hebat yang SUCKER lain dapat refactor dan memperbaiki kode saya yang hampir-tapi-tidak-cukup-ok" "... Saya tidak bisa mengungkapkan kepada Anda betapa saya membenci orang-orang brengsek itu.
John MacIntyre
Hai John. Aku mendengarmu. Saya menghabiskan bertahun-tahun dalam hidup saya menjadi pengisap itu ... membayar setengahnya dan berkeringat sampai tengah malam untuk mendapatkan pemahaman yang benar-benar baik tentang apa yang terjadi (dan menulis ulang lembaran besar kode omong kosong) - sementara tembakan panas berlanjut untuk mengacaukan sesuatu yang lain. Mendesah.
cepat,
1
Semakin banyak orang di tim, semakin banyak "refactor nanti" menjadi "refactor never" sejauh yang saya bisa lihat: /
wildpeaks
8

Ketika saya terjebak dan mencari hal-hal untuk menyelesaikan masalah saya dan terjadi pada beberapa potongan kode yang membantu yang saya inginkan, saya menyalinnya secara alami. Terkadang itu adalah intinya. Saya kemudian mengubahnya sesuai kebutuhan saya. Ini lebih sering terjadi ketika saya mempelajari hal-hal yang saya tidak ahli dalam (saat ini, Objective-C).

Saya selalu meluangkan waktu untuk belajar sesuatu dari kode, jadi bagi saya itu adalah cara yang bagus untuk belajar dan menghindari menciptakan kembali roda.

Martin Wickman
sumber
4
Saya selalu mengatakan 'pengembang yang baik adalah pengembang yang malas'. Saya tidak menemukan kembali roda jika orang lain sudah melakukannya. Tapi saya tetap kecil ... Saya tidak pernah menyalin lebih dari beberapa baris kode, dan tidak pernah apa pun yang saya tidak mengerti sepenuhnya.
morganpdx
Saya semua belajar dari orang lain, tetapi tidakkah Anda menemukan bahwa kecuali Anda mencari masalah tertentu, hanya membungkus kepala Anda dengan apa yang telah dilakukan orang lain lebih memakan waktu daripada melakukannya dari awal? (perhatikan saya sedang berbicara tentang 'kode', bukan unit fungsi lengkap seperti kelas, dll ...)
John MacIntyre
@ John MacIntyre Bisa jadi, tapi biasanya ketika saya memasukkan beberapa potongan kode kecil, saya mencetaknya sampai saya puas dengan itu. Seringkali itu perlu diadaptasi (menjadi fungsi, lebih umum, diperbaiki, dioptimalkan dll).
Martin Wickman
@ John: Potongan kode menyediakan potongan-potongan yang menunjukkan kepada Anda bagaimana melakukan sesuatu. Tentu saja, potong dan tempel. Tapi seperti yang Martin tunjukkan - pelajari apa yang dilakukan kode itu. Anda akan menghabiskan lebih banyak waktu mencari metode tertentu yang Anda tidak tahu namanya. Ketika Anda tidak tahu apa arti kata; Anda mencarinya di kamus. Definisi 100% jelas; tetapi seberapa sering Anda melihat sampel penggunaan? Contoh kode seperti contoh penggunaan kamus. MSDN tidak selalu menyertakan sampel penggunaan, atau sering tidak lengkap.
IAbstrak
6

Saya akan berbicara tentang menyalin / menempelkan kode orang lain di sini. Meraih bagian dari karya saya sendiri dari perpustakaan pribadi saya adalah permainan yang adil. Saya mengenal mereka dan memahaminya menurut definisi.

Saya menemukan bahwa situasi paling sering di mana saya "cut & paste" kode adalah ketika saya memiliki masalah tertentu dan saya mengalami posting blog yang menyelesaikannya. Seringkali saya mengetik ulang solusi ke proyek saya (setelah semua, itu mungkin ditulis dalam gaya penulis blog, jika tidak ada yang lain). Ini bukan kode saya yang sebenarnya , tetapi saya tidak merasa sedih untuk menggunakannya dalam skenario itu.

Keluar dan mengambil seluruh metode atau sistem untuk menempelkannya ke dalam proyek saya apa adanya dan menyebutnya selesai adalah sesuatu yang saya tidak mengerti. Ada pertanyaan tentang StackOverflow tempo hari yang dengan sempurna menggambarkan masalah dengan melakukan sesuatu seperti itu.

Berbaur bersama monster Frankenstein dari bagian kode yang berbeda tidak bisa semudah itu. Maksud saya, jika Anda ahli dalam hal itu, itu berarti Anda mereplikasi solusi yang sama berulang-ulang atau Anda telah memperoleh pemahaman yang cukup tentang kode orang lain sehingga tingkat copy / paste yang sama tidak lagi diperlukan dan Anda produktivitas akan meningkat karena tidak harus menyelesaikan masalah antara contoh kode yang tidak kompatibel.

Saya pribadi belum bertemu banyak programmer yang menyalin / menempel dalam skala besar. Saya telah melihat banyak orang yang mengkodekan diri mereka sendiri ke sudut terdalam dan paling gelap, tapi itu cerita yang berbeda. Berdasarkan anekdata pribadi saya, saya akan mengatakan bahwa sebagian besar programmer tidak menyalin / menempelkan seluruh aplikasi secara bersamaan, tetapi sangat sulit untuk mengatakannya dengan pasti.

Adam Lear
sumber
1
Mungkin banyak programmer tidak menyalin / menempelkan kode aktual dalam skala besar, tetapi mereka akan dengan senang hati memanfaatkan perpustakaan yang sudah jadi (gratis atau tidak) tanpa melihat satu baris kode ...
hplbsh
1
@Stuart Benar, tapi saya pikir perbedaannya adalah bahwa perpustakaan tidak akan diklaim sebagai karya programmer sendiri. Dan sejujurnya, selama perpustakaan bekerja dan melakukan apa yang saya perlukan, saya tidak terlalu peduli untuk meneliti sumbernya juga. (Dengan asumsi due diligence dilakukan pada bagaimana reputasi / keandalan perpustakaan di tempat pertama.)
Adam Lear
Di satu sisi itu masalah niat, baik di pihak penerbit dan konsumen :)
hplbsh
@stuart - Saya tidak akan menyertakan perpustakaan dalam diskusi ini karena ini adalah unit kohesif ... tidak benar-benar 'kehilangan' kode, jika Anda tahu apa yang saya maksud.
John MacIntyre
Sebenarnya memikirkan komentar Anda, saya jujur ​​harus bertanya-tanya apakah mungkin bagi seorang programmer untuk memotong & menempelkan sistem yang lengkap bersama-sama. Saya pikir beban keangkuhan mereka akan cepat longsor, menghancurkan kemajuan mereka menjadi macet.
John MacIntyre
4

Buruk: Menyalin dan menempel blok kode yang sama berulang kali

Jika Anda menemukan diri Anda melakukan ini, Anda mungkin harus berpikir sejenak tentang apa yang dapat diabstraksi dari kode yang sedang disalin dan membuat fungsi / metode untuk menanganinya. Di sinilah prinsip KERING (Jangan Ulangi Diri Sendiri) penting.

Bagus: Menyalin satu blok kode yang diketahui berfungsi

KERING (Jangan Ulangi Diri Sendiri) juga berlaku di sini, hanya dalam arti yang berbeda. Yaitu, jangan ulangi pekerjaan yang sudah Anda lakukan di masa lalu. Jika Anda telah meluangkan waktu untuk menulis bagian kode, men-debug, mengujinya, dan terbukti bekerja dalam basis kode produksi; Anda akan bodoh untuk tidak menggunakannya kembali.

Kebanyakan orang memberikan copy-paste paste buruk karena banyak programmer pemula menghabiskan waktu mereka menjelajahi internet dan menyalin / menempelkan kesalahan kode orang lain tanpa memahami apa yang sebenarnya dilakukannya.

Menulis semuanya dari awal setiap kali tidak lebih baik. Saya tahu ada banyak programmer purist sekolah tua yang semuanya harus ditulis dari awal dan saya harap saya tidak terjebak bekerja dengan mereka. Jika Anda memiliki pengalaman pemrograman 5 tahun, Anda harus memiliki pustaka kode yang cukup substansial yang utama untuk digunakan kembali. Ini adalah salah satu aset terbaik yang dapat dibawa oleh programmer berpengalaman ke meja karena berpotensi menghemat banyak waktu pengembangan.

Jika Anda tidak mengerti dengan kode lama Anda pada mulanya, luangkan waktu sejenak untuk membaca komentar dan membiasakan diri Anda kembali. Jika komentar Anda payah ... baik, itu masalah lain sama sekali.

Evan Plaice
sumber
Alih-alih menyalin dan menempelkan kode, sangat mungkin untuk menulisnya dengan cara yang dapat digunakan kembali. Kemudian gunakan itu alih-alih menyalin dan menempelkannya.
Bjorn
1
@ BJJipTipling Ya, biasanya lebih baik memecah kode menjadi fungsi yang dapat digunakan kembali kecuali proses itu menambah kompleksitas dan kode tidak akan pernah digunakan kembali
Evan Plaice
Jika Anda menyalin dan menempelkannya, Anda menggunakannya kembali. Saya setuju orang-orang harus menggunakan kepala mereka dan bahwa syarat mungkin menjaminnya. Saya telah menemukan diri saya melakukan penyalinan dan menempel ketika menulis tes, tetapi bahkan di sana saya mencoba untuk membuat fungsi yang dapat digunakan kembali, tetapi kemudian ada seperti dua atau tiga baris yang hampir sama, tetapi saya tidak bisa menggeneralisasikannya cukup untuk berubah menjadi fungsi yang dapat digunakan kembali.
Bjorn
3

Setelah 25 tahun menulis kode, ada saatnya (tanpa akses ke kode yang saya tulis untuk majikan sebelumnya) saya berharap bisa memotong dan menempel. NAMUN ini sangat jarang (dan terus membaca).

Mungkin contoh terbaik adalah parser baris perintah yang sangat sederhana yang saya temui bertahun-tahun yang lalu untuk sistem operasi unix. Loop sederhana yang membuka argumen dan memproses opsi. Itu sangat sederhana dan elegan, dan saya telah menggunakan itu (lebih sebagai pola daripada memotong dan menempel secara harfiah) berkali-kali sejak itu. Ini adalah pengecualian daripada aturannya.

Biasanya cut and paste ole benar-benar tidak pantas - ini lebih memotong dan menyisipkan konsep, atau algoritma, yang telah penting.

Saya tidak terlalu bangga - Saya akan dengan senang hati mencari-cari untuk menemukan algoritma paritas yang sangat cepat atau kode verifikasi hamming atau sesuatu yang eksotis seperti itu. Kemudian habiskan beberapa jam untuk memahaminya untuk melihat apakah itu benar-benar hal super cepat yang saya kejar, atau tumpukan sampah yang naif.

Saya khawatir setiap kali ada orang yang hanya menyalin kode tanpa berhenti untuk memahaminya. Mereka bisa saja jenius (mengerti dan seluk beluknya dalam sekejap), atau bodoh. Tidak ada banyak ruang untuk apa pun di antaranya. Oh, dan juga tidak ada banyak genius sejati.

Tanpa pemahaman, Anda benar-benar tidak tahu apa yang baru saja Anda lemparkan di BENAR-BENAR tidak, di bawah tidak hanya bahagia tetapi juga keadaan yang tidak bahagia atau kondisi input. Terkadang ini tidak masalah karena Anda beruntung. Dan kadang-kadang ini membuat rasa sakit jangka panjang.

dengan cepat_now
sumber
4
di sisi lain, ada programmer yang menulis kode sendiri dan masih tidak memahaminya ...
hplbsh
3

Ada situasi umum di mana Anda pada dasarnya PERLU untuk melakukannya agar menjadi produktif.

Teknologi apa pun yang asing bagi Anda sulit dipelajari kecuali Anda memiliki contoh yang bagus untuk memulai. Karenanya, Anda menyalin dan menempelnya agar memiliki sesuatu yang benar-benar berjalan , dan kemudian mulai bermain-main dengannya.

pengguna1249
sumber
Koreksi: Ada kepercayaan yang sebenarnya di mana Anda pada dasarnya berpikir Anda PERLU melakukannya untuk menjadi produktif. Karenanya, Anda menyalin dan menempelkan cara Anda untuk melepaskan sesuatu yang entah bagaimana berfungsi dan menghabiskan daya yang menderita untuk memperbaiki kerusakan.
Newtopian
3

Sebagai programmer baru (4 bulan ke pekerjaan pertama saya), saya mengandalkan bantuan cukup banyak (baik dari SO atau tempat lain). Saya menekankan TIDAK menyalin dan menempelkan kode orang lain secara membuta. Bahkan jika kode yang disediakan adalah apa yang akan saya gunakan, saya akan mengetiknya ke dalam program saya dan kemudian menghabiskan sedikit waktu memastikan saya benar-benar mengerti apa yang dilakukannya dan alasannya.

Saya ingin memastikan bahwa saya terus-menerus belajar dan bukan hanya ahli memotong dan menempel

Darren Young
sumber
1

Saya memiliki banyak perasaan tentang topik ini, dan saya tidak dapat dengan jujur ​​mengatakan salah satu dari mereka sepenuhnya objektif.

Ada banyak argumen untuk memotong dan menempelkan kode orang lain ke dalam aplikasi Anda. Beberapa dari mereka mungkin masuk akal, beberapa mungkin tidak. Misalnya, jika Anda memiliki metode dari blog seseorang yang mengambil input dan menjalankan beberapa algoritma matematika rumit yang jauh di luar kemampuan matematika Anda dan mengeluarkan hasilnya - itu argumen untuk memotong dan menempel - dapatkan izin penulis untuk menggunakan mereka kode dan kredit mereka di mana karena - itu hal yang terhormat untuk dilakukan.

Ada argumen untuk tidak menciptakan kembali roda - lagi, ini masuk akal, secara teori. Tetapi jika Anda tidak meluangkan waktu untuk menjadi akrab dengan kode yang Anda potong dan tempelkan, Anda tidak tahu apakah ada cara yang lebih baik untuk menyelesaikan masalah ini, Anda tidak tahu apakah ada bug dalam kode tersebut . Bagaimana jika roda yang Anda tempel rusak?

Ada argumen untuk kecepatan dan efisiensi - Anda membangun perpustakaan kode orang lain yang telah Anda rampas, curi, jiplakan atau sebaliknya, kalau dipikir-pikir, Anda mungkin tidak perlu tahu cara memprogram di luar Frankensteining beberapa aplikasi bersama-sama dari bagian reklamasi.

Ada waktu dan tempat di mana saya menganggap perilaku ini sepenuhnya dapat diterima. Untuk meretas bersama alat membuang cepat yang tidak dirancang untuk umur panjang tetapi untuk menyelesaikan tugas, saat ini dengan cara apa pun. Untuk tujuan membuat prototipe dan mempelajari persetujuan, untuk belajar dan maju dalam konteks teoretis, saya pikir ini adalah permainan yang sepenuhnya adil.

Memotong dan menempelkan kode orang lain adalah plagiarisme - jika Anda memiliki berkah dan Anda memahami kode yang Anda tempelkan dan itu sesuai dengan konstruksi standar pengkodean untuk aplikasi Anda, maka baiklah, saya akan mengakui itu adalah permainan yang adil.

Sebagai seorang insinyur perangkat lunak profesional, saya dibayar untuk mempertahankan standar dan kode etik. Saya tidak dibayar untuk mencuri, menjiplak, atau melanggar hak cipta orang lain sehingga membahayakan klien saya. Selain itu, ada risiko yang sangat nyata bahwa ketika Anda menjalankan kode cut / paste kata itu memiliki efek samping bencana.

Tidak menargetkan jawaban ini pada Anda John, saya tahu Anda cenderung secara etis ketika datang ke topik seperti ini, jadi ini benar-benar hanya kata-kata kasar umum ke arah pertanyaan itu sendiri.

Tambahan : Yang mengatakan, saya merasa bahwa memotong dan menempelkan kode Anda sendiri antara proyek cukup dapat diterima - kecuali itu ditulis sebagai pekerjaan-untuk-menyewa untuk orang lain, dalam hal ini Anda tidak memiliki hak cipta dan Anda harus mendapatkan izin dari orang yang Anda kodekan. Saya telah menemukan bahwa kecuali jika kode tersebut berkaitan dengan konsep fungsional hak milik, sebagian besar pengusaha tidak keberatan Anda menggunakan kembali ide-ide Anda sendiri untuk klien lain.

BenAlabaster
sumber
Apa pendapat Anda tentang menggunakan kode dari posting blog yang memecahkan masalah spesifik yang Anda alami? Apakah secara fisik menyalin / menempelkan kode apa yang Anda anggap sebagai pelanggaran etika atau akan mengetik ulang solusi ke dalam proyek Anda termasuk dalam kategori yang sama? Apakah ukuran kode "pinjaman" (yaitu program / fungsi lengkap vs potongan kecil) memengaruhi pendapat Anda?
Adam Lear
2
Saya merasa bahwa jika ada di posting blog maka penulis bermaksud untuk itu untuk umum, jadi jika itu berguna bagi Anda maka itu adalah permainan yang adil. Namun, saya jarang menemukan potongan kode yang dapat disalin kata demi kata. Mereka biasanya membutuhkan sedikit finagling.
Pemdas
Saya tidak punya masalah dengan kode dari tutorial atau posting blog yang digunakan - cukup pahami apa fungsinya. Agaknya jika itu diposting, itu tersedia.
cepat,
"Tidak menargetkan jawaban ini pada Anda, John" ... Saya sebenarnya tidak berpikir Anda ... yah paling tidak sampai saya membaca ini juga. LOL
John MacIntyre
Saya suka komentar Anda tentang plagiarisme & benar-benar memahami kode, tetapi apakah Anda benar-benar berpikir itu lebih efisien untuk menyalin / menempelkan kode orang lain, daripada hanya menulisnya sendiri? Saya menemukan bahwa Anda tidak akan sepenuhnya memahaminya dan memiliki masalah nanti, ATAU upaya Anda untuk sepenuhnya memahaminya akan memakan waktu lebih lama daripada hanya menulisnya sendiri. KWIM?
John MacIntyre
0

Jika kodenya bagus maka alih-alih salin dan tempel itu harus dibuat menjadi perpustakaan umum. Tetapi orang-orang tidak dapat diganggu dengan refactoring dan mereka lebih memilih untuk memiliki fungsionalitas yang sama disebarkan oleh copy dan metode.

Alih-alih memiliki hukum absolut universal tentang salin dan rekat baik atau buruk, orang harus melihat kapan menggunakannya.

Pro untuk salin dan tempel adalah: Membuat Anda berjalan cepat Kontra adalah: Kode yang sama tersebar di beberapa tempat dan setiap masalah yang ditemukan / dipecahkan perlu dipecahkan di mana-mana, jika alih-alih menyalin dan menempelkan yang digunakan sebagai perpustakaan umum maka pembaruan akan merambat ke mana-mana. Untuk investasi awal kecil menggunakan perpustakaan alih-alih menyebarkan kode yang sama di mana-mana berjenis.

Pilihannya adalah apakah menghemat sedikit waktu awalnya dibandingkan dengan banyak kemudian, kemudian salin dan tempel adalah cara untuk pergi, jika tidak refactore dan letakkan di perpustakaan umum.

Arjang
sumber
Saya pasti setuju tentang perpustakaan umum, tetapi haruskah Anda memotong & menempelkan kode itu, atau membuatnya dari awal?
John MacIntyre
Cara tercepat untuk mengimpor kode adalah dengan menyalin dan menempel tetapi orang harus meninjau dan jika perlu memodifikasi kode sebelum memasukkannya ke dalam proyek dan melupakannya.
Arjang
0

Dalam kebanyakan kasus, kode yang Anda temukan di internet tidak sesuai dengan tujuan Anda.

Apa yang saya lihat banyak dilakukan adalah menyalin kode dari seseorang, menelanjanginya sampai ke esensi dan kemudian menambahkan kode sampai memenuhi persyaratan saya. Saya akan selalu memperbaikinya agar sesuai dengan konvensi penamaan dan gaya penulisan saya.

Saya pribadi benci ketika saya membaca tutorial dan mereka mulai dengan menunjukkan kode untuk kasus yang rumit. Mulai dengan esensi dan tunjukkan blok bangunan untuk memperpanjang kode. Jika saya pernah memulai blog sendiri, saya akan memberikan orang dengan contoh kode komentar yang menunjukkan inti dari apa yang ingin saya lakukan, bagaimana Anda dapat menambahkan fungsionalitas / kasus khusus dan contoh fitur dasar yang berfungsi penuh.

J. Maes
sumber
-1

Mengapa menemukan kembali roda jika Anda mengerti apa yang dilakukan kode, memiliki izin untuk menggunakan kembali kode (atau terbuka), dan Anda tidak perlu semua kode yang ditulis orang lain. Saya sering menyalin implementasi algoritma dan memodifikasinya untuk kebutuhan saya sendiri. Biasanya meskipun ketika saya hanya memotong dan menempelkannya karena saya tidak memerlukan semua yang ada dalam contoh sehingga menambahkan file lain hanya akan menjadi sia-sia (atau itu adalah sesuatu di dalam suatu fungsi). Saya setuju dengan jzd jika Anda memotong dan menempelkan kode Anda sendiri dalam proyek yang sama maka ada beberapa kesalahan dan Anda mungkin harus mencari cara ekonomis baik untuk Lib atau berbagi fungsi.

scrappedcola
sumber
-1

Saya menemukan bahwa anggota tim " integrasi " atau mereka yang tidak memiliki banyak pengalaman dengan kode atau dalam pemrograman cenderung lebih sering menyalin & menempel dan tidak memahami apa yang mereka lakukan (masuk ke masalah yang disebutkan dalam pertanyaan Anda).

Saya juga menemukan bahwa programmer sering menjauh dari cut & paste ke chagrin mereka sendiri karena mereka suka kode dan sering menemukan kembali roda, hanya karena mereka ingin melakukannya lebih baik atau belajar lebih banyak.

John K.
sumber
+1 untuk reinventing. Saya juga menemukan diri saya banyak waktu menulis ulang kode dari internet daripada menyalin paste. Saya kira saya melakukan itu karena saya tidak terbatas pada tenggat waktu. Saya dapat dengan bebas belajar sendiri dan saya dapat belajar apa yang saya inginkan.