3

今日、Google Guavas Predicates を使用して設計の拡張性を高める方法について、ブログに次の記事を書きました。これにより、次の質問を自問するようになりました:「このソリューションの必要性は、より深い設計上の欠陥によって引き起こされたものですか?」. このタイプの拡張性を実現する別の「よりクリーンな」方法はありますか? 私はこれについて深く考えすぎていますか?

4

1 に答える 1

4

Google Guavaは、Java にあるはずなのになかったいくつかの機能を Java に追加します(その多くは v7 に含まれています)。

IMO Guava は非常にクリーンで高速な傾向があります。GuavaComparisonChainと (たとえば) Apache CommonsCompareToBuilderクラスを比較してください。どちらも本質的に同じことをします。Apache は非常にシンプルで、初心者でも簡単に理解できますが、Guava はより高速で、クリーンで、リソースをあまり消費しない (より良い?) アプローチです。

行く限りPredicate、それらは機能を果たし、特にIterators.filter.

ただし、Guava ツールは、使用する前に理解する必要があります。たとえば、フィルタリングされたリストを複数回ループし、無視できないコスト (CPU/メモリ/時間) がある場合は、一度ループして最初にPredicate値を保存する方がよい場合があります。Collectionこれらのメソッドのいくつかは、フィルターを通過してそれを返すエントリが見つかるまで、関数がフィルターされていないものを呼び出すだけIterableのクラスに与えられたものをラップするだけです。next()next()Iterable

そうです、グアバは非常に便利です。Predicates やIterablesフィルタリングなどを含みCollections2ます。しかし、内部で何が起こっているのか、コードの最適化が必要な場合に対処する必要がある問題やパフォーマンスへの影響を知ることは常に役に立ちます。

于 2013-06-03T05:03:23.027 に答える