Ketika saya menghadapi pertanyaan seperti ini, saya biasanya memikirkan tiga pertanyaan dasar.
- Mana yang lebih mudah dibaca?
- Mana yang memungkinkan penggunaan kembali kode yang lebih baik?
- Mana yang lebih efisien?
Tidak harus dalam urutan ini karena tergantung pada skenario, tetapi saya percaya dalam kasus ini ketiga pertanyaan ini mendukung opsi B. Jika Anda perlu mengubah opsi untuk createClient, Anda perlu mengeditnya di setiap file yang menggunakannya. Yang mana pada opsi A adalah setiap file yang menggunakan redis, dan opsi B hanyalah redis.js. Juga jika produk yang lebih baru atau berbeda keluar dan Anda ingin mengganti redis. Adalah mungkin untuk membuat redis.js sebagai pembungkus untuk paket yang berbeda atau bahkan klien redis yang lebih baru secara substansial mengurangi waktu konversi.
Global umumnya adalah hal yang buruk, tetapi dalam contoh ini redis.js tidak boleh menyimpan status yang dapat diubah, jadi tidak ada masalah memiliki global/tunggal dalam konteks ini.