Potensi masalah
Saya sangat menyarankan untuk menghindari menambahkan pustaka eksternal ke proyek Anda. Namun, ini tidak berarti bahwa menggunakan pustaka itu jahat, dan file Gradle Anda harus sepenuhnya dibersihkan dari semua dependensi eksternal! Saya ingin menyampaikan gagasan bahwa analisis yang sangat serius perlu dilakukan sebelum menambahkan perpustakaan baru. Untuk memahami cara mengurai pustaka, mari kita lihat masalah potensial apa yang mungkin Anda hadapi saat menambahkan pustaka baru ke proyek Anda.
Ukuran aplikasi
Kebanyakan pustaka tidak meningkatkan ukuran aplikasi Anda secara signifikan. Tetapi ada libs seperti itu, setelah menambahkan aplikasi Anda akan meningkat secara signifikan! Misalnya, pustaka Realm dapat meningkatkan ukuran APK dari 4MB menjadi 12MB. Rata-rata, berat aplikasi 100MB-200MB dan tambahan 8MB mungkin tidak terlihat. Namun perlu diingat bahwa Realm bukan satu-satunya library yang berdampak negatif pada ukuran APK. Apakah mungkin untuk mengurangi ukuran APK menggunakan dependensi ini? Ya, Anda dapat membagi apk berdasarkan arsitektur prosesor. Tapi ini mengarah ke masalah berikutnya (poin 2).
Pemeliharaan kode
Proyek tumbuh, ditutupi dengan logika yang semakin banyak dan terkadang menjadi lebih sulit untuk memahaminya. Sehingga setelah beberapa tahun pengembangan proyek, setiap pengembang baru dapat dengan mudah terbiasa dengan proyek tersebut, diperlukan arsitektur proyek yang jelas. Namun, beberapa pustaka dapat membatalkan pemeliharaan proyek. Misalnya, pekerjaan yang salah dengan EventBus dapat sangat membingungkan logika aplikasi Anda. Penting untuk membedakan dengan jelas antara di mana dan dalam kasus apa Anda menggunakan lib ini. Dan juga untuk memastikan bahwa tidak ada yang akan menyimpang dari aturan ini. Tapi apa yang terjadi dalam praktiknya? Hampir setiap pengembang yang memulai dengan EventBus menggunakannya di mana-mana. Akibatnya, proyek menjadi tidak terbaca sama sekali.
Saatnya menjelajahi perpustakaan
Saat menambahkan pustaka baru, Anda perlu mempelajari cara berinteraksi dengannya. Ada perpustakaan yang bisa berdampak sangat negatif terhadap kecepatan pembangunan di masa depan.
Misalnya, PagingLibrary Google membutuhkan banyak upaya untuk mencari tahu bagaimana berinteraksi dengannya. Setiap pengembang baru membutuhkan waktu 12 hingga 20 jam untuk memahami pustaka ini. Anda kehilangan hampir 3 hari! Hanya dalam 3 hari ini, Anda dapat menuliskan pagination dan tidak bergantung pada solusi pihak ketiga.
Bangun kecepatan
Kecepatan build aplikasi modern buruk. Namun, jika Anda ingin lebih meningkatkan waktu pembuatan - gunakan Dagger ! Saya tidak tahu mengapa library tersebut masih aktif digunakan setelah munculnya Kotlin. Dalam kebanyakan kasus, Dagger berisi semua 4 masalah yang dijelaskan di atas.
Bug, bug, bug ...
Dalam pengalaman saya, hanya dalam satu proyek, saya melihat 5 perpustakaan karena adanya bug di dalamnya. Ingatlah bahwa hampir selalu ada bug di perpustakaan. Misalnya:
- AndroidPdfViewer meninggalkan kebocoran memori, salah menangani beberapa kasus dengan null, yang menyebabkan NullPointerException muncul
- Komponen Navigasi Android tidak berfungsi dengan benar dengan animasi Elemant Bersama dalam beberapa kasus
- Cicerone terkadang merusak aplikasi karena
executePendingTransactions()
Apakah ini berarti perpustakaan tidak layak digunakan? Tidak, pustaka dapat dan harus digunakan, tetapi penting untuk setidaknya memastikan bahwa tidak ada bug kritis untuk proyek Anda dalam daftar masalah.
Adanya kerentanan di perpustakaan
Tahukah Anda cara termudah untuk meretas beberapa aplikasi sekaligus dengan memeriksa hanya satu kode sumber? Kami perlu menemukan bug di perpustakaan besar yang digunakan oleh banyak pengembang. Dan melalui kerentanan lib ini untuk mendapatkan akses ke data aplikasi Anda. Jika Anda tidak mengembangkan aplikasi yang membutuhkan perhatian lebih terhadap keamanan pengguna, maka Anda dapat menutup mata pada poin ini. Jika tidak, cari masalah yang mengatasi potensi kerentanan.
Dukungan perpustakaan
Jika perpustakaan belum diperbarui selama satu tahun, tanyakan apakah itu layak untuk digunakan. Faktanya adalah ada bug di perpustakaan secara teratur. Jika bug ini tidak diperbaiki, apakah layak menggunakan perpustakaan ini? Sangat mungkin bahwa dalam waktu dekat Anda akan menemukan bug perpustakaan dan Anda harus mencari cara alternatif untuk mengimplementasikan fitur tersebut. Ada beberapa pustaka yang perlu beradaptasi dengan kemampuan API Android saat ini. Misalnya, jika elemen baru telah muncul di Android, Anda perlu menambahkan dukungan untuk itu. Perpustakaan ini termasuk Anko , yang tidak lagi didukung. Sekarang tidak masuk akal untuk menggunakan pustaka ini dalam proyek besar.
Pustaka ada di semua lapisan proyek
Pustaka seperti RxJava atau PagingLibrary memaksa pengembang untuk menggunakan API mereka di setiap lapisan aplikasi. Jika Anda yakin bahwa perpustakaan akan selalu ada dalam proyek tersebut, maka tidak ada masalah. Tetapi jika karena alasan tertentu Anda harus memotong perpustakaan, maka Anda akan menghabiskan upaya besar-besaran! Anda harus menulis ulang setengah dari proyek tersebut.
Keterbatasan perpustakaan
Setiap lib menyediakan API yang dibatasi oleh ketersediaan metode publik dan implementasi internal. Pastikan kapabilitas perpustakaan sepenuhnya mencukupi untuk Anda. Misalnya, pustaka Komponen Navigasi Android yang populer sangat praktis untuk pengembang. Itu tidak menyediakan metode show, hide, add (yang dimiliki FragmentTransaction). Selain itu, pustaka memperumit pekerjaan dengan BottomNavigationView saat diperlukan untuk menyimpan riwayat tab.
File Gradle besar dengan dependensi
Ketika saya datang ke proyek baru, hal pertama yang saya lakukan adalah melihat dependensi di file Gradle. Itu memperjelas apa yang dapat dilakukan aplikasi dan bagaimana tugas tertentu diselesaikan. Tapi saya terkejut ketika saya melihat OkHttp, Retrofit, dan Volley (fork) digunakan untuk bekerja dengan jaringan. Dan itu hanya jaringan. File Gradle itu sendiri terdiri dari sejumlah besar pustaka, yang dukungannya telah lama berakhir. Ketika seorang pengembang sendirian, dia dapat menyimpan seluruh proyek di kepalanya, tetapi ketika pengembang baru datang, menjadi sangat sulit untuk memahami proyek semacam itu.
Daftar pertanyaan sebelum menerapkan perpustakaan
- Masalah apa yang dimiliki perpustakaan ini? Apakah mereka penting untuk proyek saya?
- Seberapa diuji perpustakaan / teknologi ini oleh komunitas pengembang? Berapa banyak bintang yang dia miliki di GitHub?
- Seberapa sering pengembang menanggapi suatu masalah?
- Seberapa sering pengembang memperbarui perpustakaan?
- Berapa lama waktu yang dihabiskan oleh pengembang baru untuk mempelajari teknologi yang digunakan?
- Bagaimana perpustakaan akan mempengaruhi ukuran aplikasi?
- Bagaimana perpustakaan akan mempengaruhi kecepatan aplikasi?
- Bagaimana library memengaruhi kecepatan build? Apakah itu membantu Anda menghemat waktu pengembangan?
- Apakah perpustakaan memiliki kerentanan?
- Akankah perpustakaan hadir di setiap lapisan proyek? Seberapa kritis ini?
- Bagaimana perpustakaan membatasi opsi pengembang (hampir selalu membatasi). Apakah ini baik atau buruk?
- Apakah saya dapat menulis sendiri solusi yang akan dipertajam untuk proyek saya dalam jangka waktu yang wajar?
Sangat menarik untuk mendengar apa lagi yang bisa Anda cari saat memilih perpustakaan. Saya menantikan komentar, umpan balik, dan pertanyaan!