私の同僚の何人かは、VB.netのモジュール概念を大いに利用しています。残念ながら、私はちょうどそれを得ることはありません。私は、共有クラスよりもモジュールを使うことに何の利益も見ません。何か不足していますか?いつモジュールを使うのが望ましいでしょうか?それとも、私は(私がこの言葉でしばしばしているように)「それを得ていない」のですか?vb.netモジュールを使用することをお勧めします
答えて
VB.netでは、モジュールは共有クラスです。コンパイル時には、privateコンストラクタが与えられ、メソッドは共有に設定されます。
VB.Netクラスでは作成できない拡張メソッドなどのように、コンパイラでモジュールを強制的に使用する(静的クラスがC#にあるのと同じ方法で)場合があります。
ヘルパーメソッドのモジュールを使用すると、後で拡張メソッドに変換しやすくなり、他のインスタンスメソッドやコンストラクタの追加を制限することができます。
VB6のハングオーバーであり、完全なOOプログラミングをサポートしていないし、スタンドアロンのヘルパーメソッドを超えて広く使われていないと言われています。
完全に同意します。モジュールを使用する唯一の時間は、拡張メソッドを作成する必要があるときです。静的クラスを作成する必要がある場合は、静的メソッドと専用コンストラクタを使用して通常のクラスを作成します。私はモジュールがVB.NetにVB6プロジェクトをアップグレードするのに役立つだけだと確信しています。そのため、REMと同じだと考えています。 –
@Chris:モジュールが何らかの形で置き換えられたり、廃止されたり不要になったり、冗長化されていたりすると、REMのようにモジュールの使用が少なくなってしまいます。その代わりに、モジュールは拡張メソッドを実行するために*必須*です。なぜなら、モジュールは言語によって定義された他のコード単位で満たされていない特定のニッチをVB.netに埋め込むためです。あなたは 'Public Shared Class Foo'と言うことができるときには本当に冗長になりますが、それでもちょうど(醜い)セマンティクスです - モジュールと静的クラスは同じことをします。 IMOモジュールとクラス*は、まったく異なる目的を持っているため、異なる宣言をする必要があります。 – cHao
「静的クラス」は、「モジュール」の概念を持たない言語からは醜いと言いたいと思います。 。 – cHao
モジュールは基本的に共有クラスと同じです。主な違いは、モジュールでは、すべての余分な "共有"が必要なく、すべてが暗黙的に共有されるからです。インスタンスデータがなく、そのクラスを関数の名前空間の一種として使用しているだけの場合は、代わりにモジュールを使用してそれを明確にするのが良いアイデア(IMO)です。
- 1. super()を使用することをお勧めしますか?
- 2. Luceneを使用することをお勧めしますか?
- 3. オブジェクトリテラルをハッシュテーブルとして使用することをお勧めしますか?
- 4. モジュール間でリソースを共有することをお勧めしますか?
- 5. ボタンをお勧めします..もしお勧めですか?
- 6. TextInputLayout内でMaterialEditTextを使用することをお勧めします
- 7. なぜCursorAdapterでautoRequeryを使用することをお勧めしますか?
- 8. サロゲートキーで逆インデックスを使用することをお勧めしますか? (Oracle)
- 9. なぜsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)を使用することをお勧めしますか?
- 10. Try for flow controlを使用することをお勧めしますか?
- 11. エラー処理にRuntimeExceptionsを使用することをお勧めしますか?
- 12. URLにコロンを使用することをお勧めしますか?
- 13. CSSフレームワークを使用することをお勧めしますか?
- 14. asp.netでSMTP.SendAsyncを使用することをお勧めします。
- 15. 角でグローバルオブジェクトを使用することをお勧めします
- 16. 複数のdjangoフィルタを使用することをお勧めしますか?
- 17. WCFサービスでセルフトラッキングエンティティを使用することをお勧めしますか?
- 18. WebフォームにContentEditableを使用することをお勧めしますか?
- 19. LINQを頻繁に使用することをお勧めしますか?
- 20. UAVロボットでシングルボードコンピュータを使用することをお勧めしますか?
- 21. 単体テストでRowTestを使用することをお勧めします
- 22. メタキーワード(2017)を使用することをお勧めしますか?
- 23. ノード間でディスパッチレプリカを使用することをお勧めします。
- 24. ウェブサイトで$ _SERVER ['DOCUMENT_ROOT']を使用することをお勧めしますか?
- 25. アニメーションで5-6スレッドを使用することをお勧めしますか?
- 26. トランザクションデータにmysql ndb clusterを使用することをお勧めしますか?
- 27. アクションヘルパーでbrowserhostory.pushを使用することをお勧めしますか?
- 28. 1つのIntelliJプロジェクトで2つのWebモジュールを使用することをお勧めしますか?
- 29. デストラクタをオーバーライドすることをお勧めしますか?
- 30. DataContractSerializerインスタンスをキャッシュすることをお勧めしますか?
VB.Netでクラスを共有として宣言することはできません。モジュールは、メンバーと関数が共有されているクラス、プライベートコンストラクター、アプリケーションの開始から終了までのインスタンスが1つのみ存在するクラスとかなり同等です。 –