私の知る限り、Webアプリケーションで静的変数を使用することはお勧めできません。今私の質問は、Webアプリケーションで静的メソッドを使用することをお勧めしますか?静的メソッドは静的変数の使用としてシステムメモリを使用しますか?私の疑問を明確にしてください。よろしくお願いします。
3 に答える
はい、Web アプリケーションでは静的メソッドを使用することをお勧めします。
すべてのスレッドが同じ変数を共有するため、Web アプリケーションでの静的変数の使用は非常に限られています。
メソッドに関して言えば、メソッド自体は変更されないため、すべてのスレッドが同じメソッドにアクセスしても問題ありません。メソッド内のローカル データは、メソッドの呼び出しごとに個別であるため、複数のスレッドが同時に同じメソッドを呼び出しても問題ありません。
一般的に言えば、メソッドがインスタンス データに依存しない場合は、静的にする必要があります。つまり、メソッドを静的にできる場合 (メソッドに他の可能性がない場合)、そうする必要があります。
静的変数を避けるべき理由は、グローバルな状態を提供するためによく使用されるためです。これにより、カプセル化が壊れ、コードの一部が変数を変更する可能性があるため、プログラムの保守とデバッグが難しくなります。
ASP.NET のようなスレッド化された環境では、複数のスレッドが同じ静的変数の内容を編集する可能性があり、非決定的な結果になる可能性があるため、これはさらに悪化しました。
一方、静的メソッドは非常に優れています。それらは参照透過性を提供します。つまり、同じ入力が常に同じ出力を生成し、状態を変更する副作用がないことを意味します。これにより、スレッドは共有変数を変更することによって他のスレッドの処理に影響を与えることができないため、マルチスレッドアクセスがはるかに簡単になります (もちろん、静的変数を使用していないと仮定します)。
また、入力や予想される出力と一緒に世界の基本的な状態をテストする必要がないため、単体テストをより簡単かつ堅牢にすることもできます。
データが変更可能な場合、同時実行の問題が発生するため、静的データは避けることをお勧めします。
変更可能な静的データを利用しない静的メソッドを避ける必要はありません。特定のインスタンスに固有である必要のない機能に意味がある場合があります。