今日、Google Guavas Predicates を使用して設計の拡張性を高める方法について、ブログに次の記事を書きました。これにより、次の質問を自問するようになりました:「このソリューションの必要性は、より深い設計上の欠陥によって引き起こされたものですか?」. このタイプの拡張性を実現する別の「よりクリーンな」方法はありますか? 私はこれについて深く考えすぎていますか?
1 に答える
Google Guavaは、Java にあるはずなのになかったいくつかの機能を Java に追加します(その多くは v7 に含まれています)。
IMO Guava は非常にクリーンで高速な傾向があります。GuavaComparisonChain
と (たとえば) Apache CommonsCompareToBuilder
クラスを比較してください。どちらも本質的に同じことをします。Apache は非常にシンプルで、初心者でも簡単に理解できますが、Guava はより高速で、クリーンで、リソースをあまり消費しない (より良い?) アプローチです。
行く限りPredicate
、それらは機能を果たし、特にIterators.filter
.
ただし、Guava ツールは、使用する前に理解する必要があります。たとえば、フィルタリングされたリストを複数回ループし、無視できないコスト (CPU/メモリ/時間) がある場合は、一度ループして最初にPredicate
値を保存する方がよい場合があります。Collection
これらのメソッドのいくつかは、フィルターを通過してそれを返すエントリが見つかるまで、関数がフィルターされていないものを呼び出すだけIterable
のクラスに与えられたものをラップするだけです。next()
next()
Iterable
そうです、グアバは非常に便利です。Predicate
s やIterables
フィルタリングなどを含みCollections2
ます。しかし、内部で何が起こっているのか、コードの最適化が必要な場合に対処する必要がある問題やパフォーマンスへの影響を知ることは常に役に立ちます。