このような質問に直面したとき、私は一般的に3つの基本的な質問について考えます。
- どちらが読みやすいですか?
- コードの再利用を改善できるのはどれですか?
- どちらがより効率的ですか?
シナリオによって異なるため、必ずしもこの順序である必要はありませんが、この場合、これら3つの質問すべてがオプションBを支持していると思います。createClientのオプションを変更する必要がある場合は、すべてのファイルでそれらを編集する必要があります。それを使用します。オプションAのどれがredisを使用するすべてのファイルであり、オプションBは単にredis.jsです。また、新しいまたは別の製品が出てきて、redisを交換したい場合は、redis.jsを別のパッケージのラッパーにするか、新しいredisクライアントでさえ変換時間を大幅に短縮することができます。
グローバルは一般的に悪いことですが、この例では、redis.jsは可変状態を保存してはならないため、このコンテキストでグローバル/シングルトンを使用しても問題はありません。