JAVAのエンタープライズアプリケーションで静的メソッドを使用する

アーカン

私は本質的にHTTPサーバーであるエンタープライズJavaアプリケーションに取り組んでいます。そこで、解析、ファイルI / Oなどにいくつかの定数とある種のユーティリティ関数を使用する必要があります。この目的で静的メソッドと変数を使用しましたが、この目的で静的を使用することは悪い選択であると誰かが指摘しました。パフォーマンスとメモリの観点。

私はこの議論に同意しませんが、他の選択肢も見当たりません。それらをインスタンスメソッドに変換し、シングルトンインスタンスを介してアクセスしても、インスタンスは何らかの静的関数によってアクセスされます。

だから、これが本当に問題なのか知りたい。もしそうなら、それを修正するための最良のアプローチは何ですか?

前もって感謝します。

ᴇʟᴇvᴀтᴇ

最終的にすべてが静的main()メソッドから実行されるというのはまったく正しいことですそして、多くの関数は静的にするのに適しています。たとえば、のような単純なメソッドjava.lang.Mathです。速度とメモリ使用量は問題ではありません。静的メソッドは、他のどのメソッドよりも多くのメモリを消費したり、実行速度が低下したりすることはありません。内部的には、他のメソッドとまったく同じですが、クラスのインスタンスではなくクラスインスタンスで定義および実行されます。

静的メソッドで私が見つけた問題は、いくつかの特定の仮定(たとえば、ディレクトリがどこにあるか)をうっかりスリップしてしまい、他の場所で関数を再利用するのが難しくなることです。また、コードのテストがはるかに難しくなる可能性があります。単体テストを行う場合、通常は、*時間のかかる)I / Oを実行せずにテストできるようにする必要があります。たとえば、I / Oパーツをモックまたはスタブアウトします。あなたの方法がそれを許さないなら、それははるかに難しいです。シングルトンクラスは、同様のテストの問題を引き起こす可能性があります。

静的メソッドは、オブジェクト指向のコードではなく、機能的または手続き的なコードにつながる傾向があります。静的メソッドは、オブジェクトのリッチドメインモデルの上にある「シンタックスシュガー」の機能レイヤーとして役立つと思います。

また、Apache Commons IOGoogle Guavaなど既存のユーティリティクラスがたくさんあることにも言及する価値があります。それらはよく書かれており、頻繁に使用され、十分にテストされています。車輪の再発明をする前に、それらを見ることを検討するかもしれません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

エンタープライズモードでIE11を使用するJSFアプリケーション

分類Dev

エンタープライズJavaアプリケーションでスレッドを作成する正しい方法は何ですか

分類Dev

静的メソッドからアプリケーションインスタンスを取得します

分類Dev

Eclipseプラグインアプリケーションで完全なメソッド名を取得する方法

分類Dev

Java エラー: アプリケーション開始メソッドの例外

分類Dev

Springアプリケーションのユーティリティクラス-静的メソッドを使用するべきか?

分類Dev

ZeroMQソケットをRatchetWebソケットライブラリにバインドして、PHPアプリケーション用のリアルタイムアプリケーションを作成するにはどうすればよいですか?

分類Dev

アプリケーションでファインダーメソッドを定義する際の問題

分類Dev

安全な方法でエンタープライズアプリケーションでmultipeTask <>を実行する

分類Dev

Play以外のアプリケーションでPlayFramework構成ライブラリのコマンドラインパラメーターを使用する方法

分類Dev

エンタープライズアプリケーションにGraphQLを使用する方法

分類Dev

エンタープライズアプリケーションでJavaが頻繁に使用されるのはなぜですか?

分類Dev

Mac AppStoreのosxアプリケーションにコマンドラインユーティリティをバンドルするにはどうすればよいですか(サンドボックスエンタイトルメントを使用)

分類Dev

SpringBootアプリケーションでモデルデータを使用して1つのコントローラーメソッドから別のメソッドにリダイレクトする方法

分類Dev

ASP NETMVCアプリケーションは静的な「メイン」メソッドを要求します

分類Dev

アプリケーションコードのメソッドをインターセプトするようにDalvik仮想マシンを変更する

分類Dev

CMakeのテストアプリケーションで静的ライブラリを使用する際のリンカーエラー

分類Dev

クライアントアプリケーションで複数のウィンドウを持つ1つのソケットを使用する

分類Dev

LibGDX モバイル アプリケーションでサイズ変更メソッドを使用する価値はありますか?

分類Dev

ASP.NETMVCアプリケーションのライフサイクルで静的リソースを破棄するタイミング

分類Dev

アプリケーションの例外は、メソッドのエラーを開始します。私はIntellJでのJavaFXを使用しています

分類Dev

エンタープライズWebアプリケーションでのキャッシュ

分類Dev

エンタープライズアプリケーションAzureADでAPIをグラフ化するためのアクセス許可を付与する

分類Dev

iOSの静的ライブラリとメインアプリケーションでAFNetworkingする方法は?

分類Dev

クラウドはエンタープライズJava Webアプリケーションの準備ができていますか?Java EEホスティングのアドバイスを求める

分類Dev

(未定義のインデックス: ドライバー) Laravel アプリケーションでデータベース クエリを実行しようとすると、なぜこのエラー メッセージが表示されるのですか?

分類Dev

SpringBatchアプリケーションのアイテムプロセッサでジョブパラメータの1つを使用する

分類Dev

JavaFxエラー:アプリケーション開始メソッドの例外

分類Dev

エンタープライズアプリケーションでのThreadLocalの使用

Related 関連記事

  1. 1

    エンタープライズモードでIE11を使用するJSFアプリケーション

  2. 2

    エンタープライズJavaアプリケーションでスレッドを作成する正しい方法は何ですか

  3. 3

    静的メソッドからアプリケーションインスタンスを取得します

  4. 4

    Eclipseプラグインアプリケーションで完全なメソッド名を取得する方法

  5. 5

    Java エラー: アプリケーション開始メソッドの例外

  6. 6

    Springアプリケーションのユーティリティクラス-静的メソッドを使用するべきか?

  7. 7

    ZeroMQソケットをRatchetWebソケットライブラリにバインドして、PHPアプリケーション用のリアルタイムアプリケーションを作成するにはどうすればよいですか?

  8. 8

    アプリケーションでファインダーメソッドを定義する際の問題

  9. 9

    安全な方法でエンタープライズアプリケーションでmultipeTask <>を実行する

  10. 10

    Play以外のアプリケーションでPlayFramework構成ライブラリのコマンドラインパラメーターを使用する方法

  11. 11

    エンタープライズアプリケーションにGraphQLを使用する方法

  12. 12

    エンタープライズアプリケーションでJavaが頻繁に使用されるのはなぜですか?

  13. 13

    Mac AppStoreのosxアプリケーションにコマンドラインユーティリティをバンドルするにはどうすればよいですか(サンドボックスエンタイトルメントを使用)

  14. 14

    SpringBootアプリケーションでモデルデータを使用して1つのコントローラーメソッドから別のメソッドにリダイレクトする方法

  15. 15

    ASP NETMVCアプリケーションは静的な「メイン」メソッドを要求します

  16. 16

    アプリケーションコードのメソッドをインターセプトするようにDalvik仮想マシンを変更する

  17. 17

    CMakeのテストアプリケーションで静的ライブラリを使用する際のリンカーエラー

  18. 18

    クライアントアプリケーションで複数のウィンドウを持つ1つのソケットを使用する

  19. 19

    LibGDX モバイル アプリケーションでサイズ変更メソッドを使用する価値はありますか?

  20. 20

    ASP.NETMVCアプリケーションのライフサイクルで静的リソースを破棄するタイミング

  21. 21

    アプリケーションの例外は、メソッドのエラーを開始します。私はIntellJでのJavaFXを使用しています

  22. 22

    エンタープライズWebアプリケーションでのキャッシュ

  23. 23

    エンタープライズアプリケーションAzureADでAPIをグラフ化するためのアクセス許可を付与する

  24. 24

    iOSの静的ライブラリとメインアプリケーションでAFNetworkingする方法は?

  25. 25

    クラウドはエンタープライズJava Webアプリケーションの準備ができていますか?Java EEホスティングのアドバイスを求める

  26. 26

    (未定義のインデックス: ドライバー) Laravel アプリケーションでデータベース クエリを実行しようとすると、なぜこのエラー メッセージが表示されるのですか?

  27. 27

    SpringBatchアプリケーションのアイテムプロセッサでジョブパラメータの1つを使用する

  28. 28

    JavaFxエラー:アプリケーション開始メソッドの例外

  29. 29

    エンタープライズアプリケーションでのThreadLocalの使用

ホットタグ

アーカイブ