- Source: Duplikasi kode
Duplikasi kode adalah situasi di mana terdapat potongan kode sumber yang muncul lebih dari sekali, baik dalam satu program maupun di antara program-program yang dimiliki atau dikelola oleh entitas yang sama. Duplikasi kode biasanya dianggap tidak diinginkan karena berbagai alasan. Umumnya, terdapat syarat minimum terhadap jumlah kode yang harus muncul dalam sebuah urutan agar dianggap sebagai duplikasi, bukan sekadar kemiripan yang kebetulan. Urutan kode yang sama ini sering disebut sebagai code clones atau hanya clones, dan proses otomatis untuk menemukan duplikasi dalam kode sumber disebut clone detection.
Dua potongan kode dapat dianggap sebagai duplikasi meskipun tidak identik secara karakter per karakter. Misalnya, kode tersebut mungkin identik hanya setelah penghapusan karakter spasi dan komentar, atau identik secara token-per-token dengan sedikit variasi. Bahkan, kode yang hanya identik secara fungsional juga dapat dianggap sebagai duplikasi.
Penyebab kemunculan
Duplikasi kode dapat terjadi karena beberapa alasan, antara lain:
Pemrograman copy-and -paste dimana pemrogram menyalin dan menempelkan kode, sering kali untuk menghemat waktu atau karena alasan lain, seperti kurangnya pemahaman tentang bahasa pemrograman. Dalam pengaturan akademis, hal ini bahkan dapat dikaitkan dengan plagiarisme.
Scrounging, yaitu dimana sebuah bagian kode disalin karena sudah terbukti berfungsi. Biasanya, kode yang disalin mengalami modifikasi kecil seperti penggantian nama variabel atau penambahan/penghapusan baris kode.
Kesalahan independen dimana ketika pengembang secara independen menulis kode untuk fitur yang serupa, kode yang dihasilkan sering kali mirip tetapi tidak identik secara sintaksis.
Kode yang dihasilkan secara otomatis. Dalam beberapa kasus, duplikasi kode merupakan hasil dari alat otomatis yang menghasilkan kode untuk meningkatkan kecepatan atau kemudahan pengembangan.
Cara memperbaiki
Cara paling umum untuk mengatasi duplikasi kode adalah dengan memindahkan kode ke dalam satu unit tersendiri, seperti fungsi atau modul, dan memanggil unit tersebut dari berbagai tempat yang sebelumnya menggunakan kode yang sama. Pendekatan ini juga dapat didukung dengan penggunaan komponen open-source yang ditempatkan di lokasi terpusat.
Biaya dan manfaat
Kerugian Duplikasi Kode:
Kesulitan Pemeliharaan: Kode yang lebih panjang lebih sulit untuk dikelola. Jika terjadi pembaruan pada salah satu salinan kode, kemungkinan salinan lain tidak diperbarui.
Rentan terhadap Kerusakan: Jika satu salinan kode digunakan untuk tujuan berbeda dan diperbarui, pembaruan tersebut mungkin tidak relevan atau bahkan merusak fungsi lainnya.
Keuntungan Duplikasi Kode:
Dalam beberapa kasus, duplikasi dapat menjadi solusi terbaik jika bahasa pemrograman yang digunakan memiliki keterbatasan atau abstraksi yang terlalu kompleks.
Pertimbangan Lain:
Duplikasi kode secara otomatis, seperti yang dihasilkan oleh generator kode, tidak relevan dengan isu-isu ini jika hanya ada satu salinan dalam kode sumber.
Kerentanan perangkat lunak yang terdapat dalam kode duplikat mungkin terus ada jika pengembang tidak menyadari salinan tersebut.
Refaktorisasi kode duplikat dapat meningkatkan sejumlah metrik perangkat lunak, seperti mengurangi jumlah baris kode, kompleksitas siklomatik, dan coupling. Namun, risiko kerusakan akibat refaktorisasi harus diperhitungkan.
Deteksi duplikasi kode
Beberapa algoritma telah dikembangkan untuk mendeteksi duplikasi kode, di antaranya:
Algoritma Baker
Pencarian string Rabin–Karp
Penggunaan abstract syntax trees
Deteksi klon visual
Deteksi klon matriks hitung
Locality-sensitive hashing
Anti-unification
Contoh Kode Duplikat
Berikut adalah contoh kode duplikat untuk menghitung rata-rata elemen dalam sebuah array:Kode tersebut dapat disederhanakan menjadi satu fungsi:Penggunaan fungsi ini menghasilkan kode sumber yang lebih bersih dan bebas dari duplikasi:Duplikasi kode merupakan masalah umum dalam pengembangan perangkat lunak yang dapat berdampak pada pemeliharaan, efisiensi, dan keandalan perangkat lunak. Meskipun sering kali dihindari, duplikasi dapat menjadi solusi terbaik dalam kondisi tertentu. Oleh karena itu, pemahaman mendalam tentang konteks dan alat bantu deteksi duplikasi menjadi penting dalam pengelolaan kode sumber.
Lihat pula
Deduplikasi data
Redundansi data
Don't repeat yourself (DRY)
Rule of three (computer programming)