2011-12-19 75 views
0

希望這不會成爲一個愚蠢或迂腐的問題,但我很好奇。更新對象時毫無意義的getter檢查

偶爾我會在出現以下情況:現有對象的屬性,可能需要用新的變量進行更新,我會做這樣的(無特定語言):

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

的想法如果傳遞給函數的日期比當前對象中的日期更新,則該變量將被更新。把它看作是緩存某些東西的基本方式。現在

,有趣的是,我知道相比this.Varsomevar將永遠是「老」,但它可能是相同的。所以就我所知,檢查日期毫無意義,因此對於程序來說是無意義的操作。

那麼這實際上是關於是它是否是更好的 - 以任何方式 - 執行寫入到this.Var每次更新都被調用時,或得到this.Date,比較,然後可能執行寫入。只是爲了在這裏拋出一些有趣的東西,如果更新被多次調用呢?

如果我給出的例子沒有意義或者有漏洞,我表示歉意;我想不出舉一個例子的另一種方式,但希望你能看到我在這裏想要說明的一點。

回答

2

除非由於某種原因賦值是一項昂貴的操作(例如,它總是觸發數據庫寫入),否則這不會讓您的程序更快。

在你的setter中放置檢查通常是爲了強化數據的完整性,即保存程序不變量,從而保證你的其他代碼的正確性,這是非常重要的。

+0

我忘了提及IO - 我的錯。讀完我寫的東西后,我想我想說的是,做一個'get'然後_possibly_一個'set'是一個好的選擇,而不是**總是**做一個'set'。 唉...謝謝。 – daniel 2011-12-20 09:01:11