1
Javascriptで必要なモジュールと依存性注入
最近、私の頭の中に疑問が浮かびました: Javascriptの方法は、従来のソフトウェア開発で優れた実践と見なされているほぼすべてに反しますか? このステートメントに関連する一連の質問/観察事項がありますが、StackExchangeの形式を尊重するには、それらを別の質問に分割した方が良いでしょう。 必要なモジュール 最近の標準Javascriptコードは次のようになります。 const someModule = require('./someModule') module.exports = function doSomethingWithRequest() { // do stuff someModule.someFunc() // do other stuff } 長所 カプセル化:モジュールはスタンドアロンで動作し、その機能を実行するために必要なすべてを認識します。 彩色として、クライアントがモジュールを使用するのは簡単です。 短所 貧弱なテスト容易性:これは、DIを使用しない場合の標準ですが、Javscriptなどの動的言語では、mockeryまたはなどのモジュールによって回避することができます* rewire。 それは確かにDIPに違反しています-依存性注入と混同しないでください。-具体的なモジュールしかインポートできないため。 おそらくOCPに違反しています。たとえば、ファイルシステムに(fsモジュールを介して)書き込むログモジュールがあると想像してください。このログモジュールを拡張してネットワークに送信する場合、非常に困難です。 *これはCommonJSまたはAMDモジュールでも動作する可能性があります。それらはほとんどユーザーランドで実装されているためです。ただし、ES6 import構文でこれがどのように可能になるかはわかりません。 依存性注入 依存性注入を使用すると、次のようになります。 module.exports = function doSomethingWithRequest(someModule) { // do stuff someModule.someFunc() // do other stuff } 長所 …