Antipattern " Reinvent the wheel " adalah yang cukup umum - daripada menggunakan solusi yang siap pakai, tulis sendiri dari awal. Basis kode tumbuh tanpa perlu, antarmuka yang sedikit berbeda yang melakukan hal yang sama tetapi sedikit berbeda, waktu terbuang untuk menulis (dan men-debug!) Fungsi yang sudah tersedia. Kita semua tahu ini.
Tapi ada sesuatu di ujung spektrum yang berlawanan. Ketika alih-alih menulis fungsi Anda sendiri yang merupakan dua baris kode, Anda mengimpor kerangka / API / pustaka, instantiate, mengkonfigurasi, mengubah konteks menjadi tipe data yang dapat diterima oleh kerangka kerja, lalu memanggil satu fungsi tunggal yang melakukan persis apa yang Anda butuhkan, dua baris logika bisnis di bawah satu gigabyte lapisan abstraksi. Dan kemudian Anda perlu memperbarui perpustakaan, mengelola dependensi build, menjaga lisensi tetap sinkron, dan kode instantiasi Anda sepuluh kali lebih lama dan lebih kompleks daripada jika Anda hanya "menciptakan kembali roda".
Alasannya mungkin beragam: manajemen yang secara tegas menentang "reinvention of the wheel" terlepas dari biaya, seseorang mendorong teknologi yang mereka sukai meskipun sedikit tumpang tindih dengan persyaratan, peran yang semakin menipis dari modul utama sistem sebelumnya, atau harapan ekspansi dan lebih luas penggunaan kerangka kerja, yang tidak pernah tiba, atau hanya kesalahpahaman tentang "bobot" beberapa instruksi impor / sertakan / muat membawa "di belakang layar".
Apakah ada nama umum untuk antipattern semacam ini?
(Saya tidak mencoba memulai diskusi ketika itu benar atau salah, atau jika itu adalah antipattern atau pendapat yang berdasarkan apa pun , ini adalah pertanyaan nomenklatur yang sederhana dan obyektif.)
Sunting: pembicaraan "duplikat" yang disarankan tentang overengineering kode sendiri untuk membuatnya "siap untuk segalanya", sepenuhnya terpisah dari sistem eksternal. Hal ini mungkin dalam beberapa kasus berasal dari itu, tetapi umumnya berasal dari "keengganan untuk menciptakan kembali roda" - kode digunakan kembali di semua biaya; jika solusi "siap pakai" untuk masalah kita ada, kita akan menggunakannya, tidak peduli seberapa buruk itu cocok dan berapa biayanya. Dogmatis mendukung penciptaan dependensi baru daripada duplikasi kode, dengan total mengabaikan biaya integrasi dan pemeliharaan dependensi ini bila dibandingkan dengan biaya pembuatan dan pemeliharaan kode baru.
Jawaban:
Tidak. Tidak ada nama anti-pola yang umum digunakan yang mencakup apa yang Anda gambarkan.
sumber
Palu Emas
Palu emas adalah alat yang dipilih hanya karena mewah. Ini tidak hemat biaya atau tidak efisien dalam melakukan tugas yang dimaksud.
sumber: xkcd 801
(Meskipun suara turun, saya mendukung jawaban ini. Mungkin bukan kebalikan dari menciptakan kembali roda secara semantik, tetapi cocok dengan setiap contoh yang disebutkan dalam pertanyaan)
sumber
Robert Martin menggunakan istilah " Framework Bound " untuk merujuk pada konsekuensi negatif yang paling jelas dari pola-anti ini. Karena saya tidak berpikir ada nama umum untuk pola itu sendiri, referensi untuk konsekuensi ini cukup untuk sebagian besar tujuan.
sumber
Halaman wikipedia ini pada " Diciptakan Di Sini " menggambarkan situasi yang sedikit berbeda tetapi dengan hasil akhir yang sangat mirip. Menjelaskan keengganan tim untuk membuat kode sendiri ketika fungsionalitas yang setara dapat ditemukan di sana.
Saya berpendapat bahwa nama itu agak menyesatkan. Masuk akal ketika dimasukkan ke dalam konteks dengan itu berlawanan Tidak Diciptakan Di sini yang IMHO cukup banyak sinonim untuk Menciptakan Kembali roda.
sumber
Saya pernah mendengar " Beli Versus Bangun " dan " Diciptakan di Sini " sebagai nama anti-pola untuk bias terhadap pengembangan hal-hal di rumah, bahkan ketika mungkin masuk akal untuk melakukannya. (Dan meskipun frase "beli versus membangun" seharusnya menunjukkan pilihan antara alternatif yang layak, saya menemukan itu biasanya disebutkan ketika seseorang percaya "membeli" adalah pilihan yang benar.)
sumber
AKA Overkill
sumber
Gembung adalah istilah yang luas, tetapi itu bisa mencakup apa yang Anda gambarkan. Perangkat lunak kami menjadi terlalu rumit (kembung) karena semua transformasi dan abstraksi tambahan yang diperlukan, dan kompleksitas dan dependensi itu sendiri berkontribusi pada kinerja yang lebih rendah / efisiensi yang lebih rendah dan konsumsi sumber daya yang lebih tinggi (disk, bandwidth).
Jika kita mau, kita bisa mengklarifikasi dengan istilah seperti dependensi yang membengkak .
sumber
Saya pikir Menggunakan palu godam untuk memecahkan kacang cukup dekat. Ini adalah sesuatu yang mungkin, tetapi perlu banyak sekali pekerjaan untuk memecahkan satu mur dengan cara itu, tanpa banyak kemungkinan efek samping yang tidak diinginkan terjadi. (Dan ada sekantong kacang untuk dipecahkan ...)
Ungkapan ini juga memiliki keuntungan bahwa itu bukan komputasi jargon, jadi mungkin sangat membantu dalam memberikan petunjuk kepada seseorang yang tidak memilikinya.
Ngomong-ngomong, ada perbedaan yang bisa ditarik dengan neraka ketergantungan . Jika seseorang telah membungkus semua kompleksitas di dalam enkapsulasi yang menciptakan antarmuka yang sederhana, jelas, mudah digunakan, dan memberikan hukuman dalam siklus CPU atau penggunaan memori tidak berlebihan, dan memberikan modifikasi di masa depan dari kode enkapsulasi tidak mungkin diperlukan, maka argumen yang tersisa untuk tidak menggunakannya adalah neraka ketergantungan yang mungkin menyebabkannya.
sumber
Saya tidak berpikir ada analog yang tepat, tapi saya akan mengatakan bahwa desain yang berlebihan atau rekayasa yang paling dekat.
Setidaknya, saya berpendapat bahwa inilah yang sebenarnya terjadi ketika saya menemukan sesuatu yang mirip dengan yang Anda gambarkan.
Menggunakan perpustakaan alih-alih menulis kode Anda sendiri untuk mengimplementasikan fungsi yang sama hampir tidak pernah berbahaya.
Bahkan dalam contoh hipotetis Anda, menggunakan perpustakaan untuk mengganti "dua baris kode" mungkin tidak diperlukan, tetapi tidak mungkin menyebabkan Anda sangat sedih - jika perpustakaan benar-benar dimaksudkan untuk melakukan hal yang sama dengan dua baris kode Anda .
Perpustakaan untuk melakukan hal yang sederhana juga akan sederhana. Sepertinya tidak akan membuat Anda sakit kepala seperti yang disiratkan oleh pertanyaan Anda.
Menggunakan pustaka yang rumit untuk melakukan sesuatu yang sederhana mungkin menyiratkan bahwa Anda mencoba melakukan lebih dari sekadar mengimplementasikan fungsionalitas yang diperlukan.
Seperti membangun fitur yang tidak diperlukan, mempersiapkan masa depan yang mungkin tidak akan pernah datang, dll.
Masalahnya di sini bukanlah kegagalan untuk menemukan kembali roda itu sendiri .
sumber
Jika Anda belum menemukan kembali roda, kemungkinan besar seseorang menggunakan set roda yang ada yang disediakan oleh vendor atau pihak ke-3.
Jika ini anti-pola, maka biasanya disebut vendor lock-in.
sumber
Keamanan kerja?
Anda menyebutkan semua upaya untuk menjaga sinkronisasi, dll. Beberapa orang lebih suka mengelola kode orang lain daripada menulis sendiri. Manajer, khususnya.
sumber