Saya berada dalam situasi di mana saya dapat menggunakan plugin JavaScript open source untuk memenuhi tugas. Tetapi ketika saya mencoba menggunakannya, saya mendapati diri saya harus mendesain ulang banyak hal dari apa yang telah saya lakukan, dan itu menambah kompleksitas tertentu, menurut pendapat saya, pada proyek tersebut. Sedangkan saya dapat mencapai tugas yang sama dengan kode bersih saya dapat membuat sendiri, dan tanpa perlu mengubah apa yang telah saya lakukan sejauh ini.
Haruskah Anda tetap memilih perpustakaan dalam situasi ini (seperti demi kode kualitas yang lebih baik?)
code-quality
libraries
Billal Begueradj
sumber
sumber
Jawaban:
Sebagai seorang insinyur, mungkin cocok untuk menganggap ini sebagai masalah optimisasi. Secara alami kita harus memiliki tujuan pengoptimalan . Yang umum dalam situasi semacam ini adalah meminimalkan Total Biaya Kepemilikan .
Jika Anda yakin menambahkan komponen pihak ketiga akan menghemat biaya dalam jangka panjang, Anda harus menggunakannya. Jika tidak, Anda seharusnya tidak melakukannya. Pastikan Anda mempertimbangkan biaya pemeliharaan yang berkelanjutan (misalnya, ketika versi O / S baru dirilis, atau cacat keamanan ditemukan, atau beberapa spesifikasi W3C baru dilepaskan).
Untuk banyak masalah sepele, biayanya lebih rendah untuk menumbuhkan masalah Anda sendiri, tetapi untuk masalah yang agak rumit di luar kompetensi inti organisasi Anda, sering kali masuk akal untuk pergi ke pihak ketiga.
Ada tujuan lain yang perlu dipertimbangkan (misalnya risiko) tetapi TCO adalah yang besar.
sumber
Bill Gates pernah berkata:
Kutipan ini muncul di benak saya karena hal yang sama pada akhirnya dapat dikatakan untuk jumlah perpustakaan. Sebagai aturan, saya tidak menggunakan perpustakaan kecuali:
Idealnya ketiga persyaratan terpenuhi, tetapi saya akan menerima dua syarat. Intinya adalah Anda tidak harus menambahkan perpustakaan ke program Anda kecuali jika ada gunanya. Jika Anda harus bertanya apa tujuan itu, Anda mungkin tidak boleh menambahkannya ke program Anda. Karenanya, kualitas kode program Anda menguntungkan karena ia memanggil setiap perpustakaan tanpa terbebani oleh kebutuhan untuk menulis ulang perpustakaan di dalam program Anda.
Semoga berhasil!
sumber
(Catatan: Pertanyaan aslinya adalah: Apakah jumlah perpustakaan meningkatkan kualitas kode?)
Anda mungkin dapat menjawabnya sendiri: Tidak, tentu saja fakta menggunakan perpustakaan tidak meningkatkan kode Anda. Jika ya, akan mudah untuk menulis kode yang bagus untuk semuanya tanpa usaha.
Apa yang orang-orang maksud ketika mereka merekomendasikan penggunaan ulang atas roll-milik Anda sendiri adalah bahwa kode di perpustakaan terkenal mungkin lebih benar, efisien dan / atau dapat digunakan daripada apa yang akan Anda buat sendiri, hanya karena penulis telah menghabiskan lebih banyak waktu pada satu area fungsi tertentu daripada Anda (dengan tenggat waktu Anda untuk seluruh proyek) mampu.
Tapi itu hanya tren, bukan hukum. Tentu saja ada perpustakaan yang tidak begitu berguna untuk digunakan seperti roll-milik Anda sendiri. Seringkali ini terjadi ketika perpustakaan benar-benar melakukan lebih dari apa yang Anda butuhkan, dan melakukannya dengan cara yang akan memaksa Anda untuk mengadaptasi basis kode Anda sendiri ke konvensi mereka lebih dari yang wajar. Sepertinya ini persis seperti yang Anda temukan dalam contoh ini.
sumber
Meskipun menggunakan perpustakaan yang tepat dapat menghemat banyak pekerjaan, ada juga banyak biaya tersembunyi:
Jadi sebelum Anda menambahkan ketergantungan lain pada proyek Anda untuk memasukkan sesuatu yang bisa Anda tulis sendiri, lakukan analisis biaya / manfaat.
sumber
Ini tidak perlu menjadi keputusan biner: Hanya menggunakan pustaka OSS, atau memprogram solusi baru dari awal. Pilihan lain mungkin menggunakan kembali bagian perpustakaan, jika lisensi mengizinkannya.
Sebagai contoh, di bidang saya (perangkat lunak numerik) perpustakaan dapat memiliki modul inti halus, dan beberapa modul khusus yang hanya 80% saya sukai. Jadi saya akan menggunakan modul inti dan menulis pembungkus untuk modul khusus. Atau saya dapat mengembangkan modul khusus saya sendiri dengan menggunakan desain dan kode modul OSS. Bit tersulit, algoritmik biasanya dapat digunakan kembali dari itu, dengan hanya kode perancah yang dimodifikasi. Saya juga dapat membersihkan beberapa kode asli. Ini telah membuktikan pengalaman belajar yang baik dan hemat waktu, dibandingkan dengan pengembangan dari awal.
sumber
Jika seseorang telah melakukan pekerjaan untuk Anda, tentu saja Anda harus menggunakannya.
Pengecualian untuk aturan ini adalah javascript. Di mana mereka akan mengimpor selusin perpustakaan lain (tentu saja versi usang) untuk menambahkan fitur bahasa yang ingin mereka gunakan dan kemudian melakukan pekerjaan untuk Anda.
Pilih kerangka kerja Anda dan tetap di dalamnya. Jika perpustakaan berfungsi dengan framework atau plain js Anda, oke. Tetapi jika itu membutuhkan kerangka kerja yang berbeda, cari opsi lain.
sumber
Perpustakaan dan kapan menggunakannya adalah keputusan yang rumit.
Di satu sisi Anda telah diuji dengan baik, hampir hal-hal standar (Di bidang saya, FFTW misalnya termasuk dalam kategori ini, atau sesuatu seperti libsndfile), yang umumnya diakui hanya berfungsi, dan telah menjadi barang standar selama 20 tahun terakhir yang semua orang gunakan.
Di sisi lain, Anda memiliki barang acak dari github, tanpa test suite dan hanya sekitar 1 pengelola, umumnya mengapa repot?
Tes asam untuk saya adalah pertama apakah perpustakaan cocok dengan arsitektur saya (Kadang-kadang, jika Anda tahu Anda ingin menggunakan perpustakaan yang diberikan Anda akhirnya merancang sekitar itu), dan apakah saya pikir saya akan berakhir debugging seseorang elses kode perpustakaan ? Proxy yang baik untuk pertanyaan kedua adalah "Apakah ada test suite otomatis dan seperti apa dokumentasinya?".
Sedikit debug bukan masalah besar, tetapi pada saat itu kode perpustakaan mulai menghitung terhadap ukuran kode saya sendiri dari perspektif pemeliharaan (Terlebih lagi jika perbaikan saya tidak dapat didorong ke hulu karena alasan tertentu).
Saya juga akan membedakan antara perpustakaan dan kerangka kerja, untuk semua perbedaan itu kadang-kadang tidak jelas, kerangka kerja di dunia (inti kecil, berat DSP) saya cenderung menyebalkan, terutama jika Anda mencoba untuk menggabungkan lebih dari itu satu atau melakukan sesuatu yang sedikit di luar garis, perpustakaan terkadang berguna. Saya sadar bahwa ini terlihat sangat berbeda di dunia web dev.
Akhir hari itu adalah keputusan yang turun ke rasa dan pengalaman, dan bahkan yang berpengalaman kadang-kadang memilih dengan buruk, masih setidaknya dengan perpustakaan, Anda selalu dapat merobeknya dan menulis implementasi Anda sendiri jika terlalu mengganggu.
Keputusan, Keputusan ....
sumber