2017-04-20 3 views
0

私は、可能な限りオブジェクトの代わりにプリミティブを使用するべきだと言っている人のビデオを見てきました。 なぜなら、オブジェクトにアクセスするということはポインタを使うことを意味し、オーバーヘッドがあるからです。したがってJAVA - ポインタチェイス - ベストプラクティス

  • ため、データベース内の潜在的なヌル値の複数のフィールドがオブジェクトであると(JPAを使用して)SQLテーブルにマッピングクラス(例:代わりINTの整数)がある場合
    • 私は、オブジェクトがプリミティブで置き換えられるマザークラスを作成する必要があります(可能な場合は、アプリでnullと同等の固定値を使用します)。(例:-1の代わりにヌルの)
    • 大きなデータ
    • の量と唯一の子でデータ
    • を永続化時に使用されるデータベースにマッピングされた子クラスを処理するときに使用されている母クラスクラスIは以下のように、列にマッピングされたいくつかのメソッドを追加することができます:
@Column("MY_COLUMN") 
public Integer getId() { 
    // super.getIdAsInt() returns a value of type int, the primitive. 
    // -1 means value not set in my app. 
    Integer result = (super.getIdAsInt() == -1) ? null : super.getIdAsInt(); 
    return result; 
} 

を、私はこのパターンはまた、子クラスがデータベースに(データの永続化についてですいずれの場合に適用することができると思いXMLファイルなど)とNULL値を持つフィールドは意味があります。

  • は、これらのアプリケーションのパフォーマンスを向上するためのベストプラクティス可能性がありますと思いますか?
  • もしそうでなければ、潜在的な欠点のいくつかの例を教えていただけますか?

おかげで、

+4

あなたはこれを問題として考えすぎているかもしれません。 – freedev

+4

私はあなたのソリューションを早めに最適化しようとしていると思います。オブジェクト指向言語を使用していますが、なぜオブジェクトを使用すべきではありませんか?間違いなくオーバーヘッドがありますが、可能な限り速い結果が求められる場合を除き、心配する必要はありません。パフォーマンス上の問題がある場合は、可能な限り最良の方法で問題を解決することに集中してください。コードをプロファイリングし、改善を行うことができる場所を確認してください – MadProgrammer

+2

NULLを意味するときにダミーの値を返すことは、コードのにおいです。あなたはそれがNULLであることを暗示すべきではありません、あなたはそれがNULLだと言うべきです。 getIDを使用し、null以外の値がnull以外の値であると仮定すると、オブジェクトが実際に存在しない理由をデバッグするためのエキサイティングな時間になります。 – Compass

答えて

1

ラッパークラスを使用する利点は、これまで任意のオーバーヘッドの影響を上回ります。オブジェクトはコレクションで使用でき、nullでもかまいません。 NullPointerExceptionは、初期化されていないプリミティブによって引き起こされるバグよりもはるかに簡単にデバッグできます。

さらに、提案している解決策は、アプリケーションに不要な複雑さを加えて、あなたや他の開発者が対処したくないことになります。

この質問is also discussed here

+0

あなたの答えをありがとう。はい、nullの代わりにダミーの値を使用すると直感的ではありません。ですから、私はAPIでそれを避けるべきです。 **しかし、あなたのモデルクラスを設計する際に、いくつかのプリミティブなフィールドの代わりに不要なオブジェクトフィールドを追加しないように(つまり、3未満)**特に、あなたがモデルクラスを扱うことがわかっているときは、データ量 – Kris

0

データはDBから取得され、これはポインタ追跡ペナルティよりも長いオーダーを要します。あなたが得るかもしれないものは無視して、あなたのgetIdの条件と条件を使ってラッパーを割り当てることによって相殺されます。あなたの重要ではないゲッターがインライン展開を妨げることがあります。

多数のプリミティブを何回も使用してコードを数えるには、ラッパーを避けることが不可欠かもしれません。ほとんどのプログラムでは、それはかなり無関係です。

関連する問題