Когато се сблъскам с въпрос като този, обикновено мисля за три основни въпроса.
- Кое е по-четливо?
- Кое позволява по-добра повторна употреба на код?
- Кое е по-ефективно?
Не непременно в този ред, тъй като зависи от сценария, но вярвам, че в този случай и трите от тези въпроса са в полза на опция B. Ако някога ви се наложи да промените опциите за createClient, тогава ще трябва да ги редактирате във всеки файл която го използва. Което в опция А е всеки файл, който използва redis, а опция B е просто redis.js. Също така, ако се появи по-нов или различен продукт и искате да замените redis, би било възможно да направите redis.js обвивка за различен пакет или дори по-нов клиент на redis, което значително да намали времето за преобразуване.
Глобалните по принцип са нещо лошо, но в този пример redis.js не трябва да съхранява променливо състояние, така че няма проблем да има глобален/единичен в този контекст.