Wenn ich vor einer Frage wie dieser stehe, denke ich im Allgemeinen über drei grundlegende Fragen nach.
- Was ist besser lesbar?
- Was ermöglicht eine bessere Wiederverwendung von Code?
- Was ist effizienter?
Nicht unbedingt in dieser Reihenfolge, da es vom Szenario abhängt, aber ich glaube, dass in diesem Fall alle drei Fragen für Option B sprechen. Wenn Sie jemals Optionen für createClient ändern müssten, müssten Sie sie dann in jeder Datei bearbeiten der es nutzt. Was in Option A jede Datei ist, die redis verwendet, und Option B ist nur redis.js. Auch wenn ein neueres oder anderes Produkt herauskommt und Sie redis ersetzen möchten, wäre es möglich, redis.js zu einem Wrapper für ein anderes Paket oder sogar einen neueren redis-Client zu machen, was die Konvertierungszeit erheblich verkürzt.
Globals sind im Allgemeinen eine schlechte Sache, aber in diesem Beispiel sollte redis.js keinen veränderlichen Status speichern, sodass es in diesem Kontext kein Problem gibt, ein Global/Singleton zu haben.