Saya baru saja merilis perpustakaan Java kecil yang hanya menawarkan beberapa kelas dan metode. Karena saya membangun proyek dengan Maven, saya segera menggunakan beberapa perpustakaan pihak ketiga untuk mencapai tujuan saya, khususnya:
- commons-lang3 (untuk beberapa hal umum Java)
- slf4j-api (untuk logging)
- commons-io (untuk sedikit file-file kecil - secara harfiah membaca file sekali, saya pikir)
Saya tidak ingin perpustakaan saya tampak kembung di mata orang lain. Haruskah saya mencoba menghilangkan ketergantungan saya pada perpustakaan ini untuk meminimalkan jejak saya? Adakah saran tentang jenis perpustakaan apa yang sebaiknya dihindari ketika mempertimbangkan untuk menggunakan lebih banyak di masa depan?
Jawaban:
Saya menjawab ini dengan mempertimbangkan situasi spesifik Anda. Saya akan mengatakan tidak apa-apa menggunakan perpustakaan itu. Pastikan slf4j-api Anda tidak membawa serta implementasinya. Maksud saya, menandai ketergantungan implementasi sebagai "tes". MISALNYA:
Ini dijelaskan secara rinci pada FAQ SLF4j.
Adapun dua lainnya, IME, mereka selalu kompatibel ke belakang. Karena itu, jika 5 tahun dari sekarang saya perlu menggunakan perpustakaan Anda tetapi Anda menggunakan versi lama dari itu, saya hanya bisa mengecualikan dependensi Anda dan kode kami masih akan berfungsi. Dengan kata lain, dengan menggunakan perpustakaan khusus ini Anda tidak akan memperkenalkan neraka-neraka untuk orang lain.
Jika saya menggunakan perpustakaan Anda melalui pakar, saya tidak akan melihat apakah perpustakaan Anda membengkak atau tidak. Saya hanya akan bergantung pada milik Anda dan menggunakannya. Saya pikir lebih penting bahwa kode Anda berfungsi dengan benar daripada mendapat jejak yang lebih kecil. Saya lebih suka Anda menggunakan commons-io daripada menciptakan kembali roda dengan bug di dalamnya.
sumber
slf4j-api
dan tidak ada artefak terkait lainnya, yang disediakan atau tidak. Lihat slf4j.org/manual.html#projectDep .exclude
s iirc) saya harus membuat ketika modul tertentu dalam dependensi saya tidak bisa "setuju" pada versi slf4j. Dari jawaban Anda sepertinya perancang modul akan mengeksposnyaprovided
, tidak akan ada masalah seperti itu, benar?provided
- sangat tidak mengganggu.mvn dependency:analyze
membawa versi omong kosong sampai dikecualikan :)Tidak.
"Kembung" adalah mitos. Tidak peduli berapa banyak kode yang ada di pustaka Anda, jika sebagian dari kode itu tidak pernah digunakan, kode itu tidak akan dipetakan - tidak akan berdampak apa pun pada kinerja atau jejak memori.
Di sisi lain, jika Anda membutuhkan fungsionalitas ekstra itu, Anda memiliki dua pilihan. Anda dapat menulis sendiri dan menghabiskan banyak waktu dan upaya memecahkan masalah yang sudah diselesaikan orang lain sebelumnya, atau Anda dapat memilih untuk menggunakan solusi yang sudah ada (dan telah diuji / di-debug / dll).
Itu membuat kami memiliki ukuran unduhan dan jejak ruang disk, dan kecuali Anda berbicara angka-angka konyol, pada tahun 2013 itu adalah dua faktor yang harusnya dekat dengan bagian bawah daftar hal-hal yang perlu Anda khawatirkan.
sumber