-1

プロジェクトに多くの依存関係(グアバなどの追加ライブラリ)を追加しない方がよいという議論を人々から聞いたことがありますjava

彼らの主張は、ライブラリを追加しすぎると速度が低下するという事実に基づいていpythonます。

私は、ライブラリにすでに組み込まれている機能を再実装することに反対しました。また、Javaのコンパイルされた性質と、ツールなどで利用できる圧縮機能は、肥大化proguardの議論を事実上無効にしていると主張しました。python

私は正しいですか?javaまたは、ビルドに追加される依存関係の量を最小限に抑えるようにする必要がありますか?

4

2 に答える 2

1

確かに、ライブラリに対する主な論拠は、インポートされたクラスのパフォーマンスではなく、コードベースの保守性に関係しています。たとえば、チームがGuavaApache Commonsをうまく組み合わせることができれば、おそらく最終的には異なるクラス(GuavaStringsとApacheStringUtilsなど)で同じ目的を達成するために、2つのライブラリからの異なるインポートを使用します。

後で、2つのクラスにまたがる類似のコードを独自のクラスにリファクタリングできると判断した場合は、2つのライブラリが異なる方法で処理する方法の不一致に対処する必要があります。

あなたは正しいと思いますが、もちろん、ビルドの依存関係を最小限に抑えるように努める必要があります。重複を避けるために、必要に応じてライブラリを導入する必要がありますが、十分に検討した後でなければなりません。

于 2013-03-12T00:23:23.917 に答える
1

Javaでのクラスのロードは、実際に使用するクラスに制限する必要があります。JITコンパイラは、肥大化の影響も軽減します。したがって、ほとんどの場合、多数の依存関係が原因でパフォーマンスが低下することはありません。

同じ機能が異なる方法で実装されているという意味で、依存関係が重複している可能性があります。つまり、インストールサイズが大きくなり(JARの合計が必要なサイズよりも大きくなります)、同じことを効果的に実行する複数の異なるクラスがロードされるため、メモリ消費量がさらに増える可能性があります。

小さな組み込みデバイスへの展開など、非常に厳しい制約に取り組んでいない限り、車輪の再発明を行わないことによる利益よりも、これらのいずれも害に近づくことはないと思います。開発の労力を節約できるだけでなく、最初からより安定したコードを取得できます。

Javaの世界でもう1つ重要なのは、Mavenです。これにより、依存関係の管理とモジュラーソフトウェアの作成が以前よりもはるかに簡単になります。モジュラーセットアップで本当に輝いています(大きなモノリシックビルドでは試さないでください)。

于 2013-03-12T00:25:28.987 に答える