2011-12-19 4 views
0

これは愚かな、または懐疑的な質問として出てこないだろうが、私は好奇心が強い。オブジェクトの更新時に無意味なゲッターがチェックする

時折私は、既存のオブジェクトのプロパティは、新しい変数を更新する必要があるかもしれない状況になるだろう、と私は(なし特定の言語で)このようにそれをやる:

public void Update(date, somevar){ 
if(date > this.Date){ 
    this.Var = somevar; 
} 
} 

アイデア関数に渡された日付が現在のオブジェクトの日付よりも新しい場合、変数は更新されます。それをキャッシュする基本的な方法と考えることができます。

さて、興味深い部分は、私がthis.Varと比較してsomevarは「古い」になることはありません知っているが、それは同じであってもよいということです。私が見る限り、日付をチェックするのは無意味なので、プログラムを実行するための無意味な操作です。その後、this.Varへのアップデートは、それを比較する、と呼ばれる、またはthis.Dateを取得するたびに書き込みを行うために、おそらく書き込みを実行する -

それでは、これを約実際にあることは、それが良いのかどうかである - どのような方法で。ここで興味深いものを投げ込もうとすると、Updateが複数回呼び出されるとどうなりますか?

私が与えた例が意味をなさないか、それに穴がある場合、私はお詫び申し上げます。私は例を挙げる別の方法を考えることはできませんが、私がここで作ろうとしているところを見ていただければ幸いです。

答えて

2

何らかの理由で割り当てが高価な操作(たとえば、常にデータベース書き込みをトリガー)しない限り、これはプログラムを高速化するものではありません。

あなたの設定者のチェックポイントは、通常、データの整合性、つまりプログラムの不変量を保持することで、他のコードの正確さを保つことです。これはかなり重要です。

+0

IO - my faultについて言及していませんでした。私がもう一度書いたものを読んだ後、私は、いつも**セットをしているのとは対照的に、 'get'を実行し、'可能な 'set'を行うのが良い選択かどうかと考えています。 まあ...とにかくありがとう。 – daniel