希望这不会是一个愚蠢或迂腐的问题,但我很好奇。
偶尔我会遇到现有对象的属性可能需要使用新变量更新的情况,我会这样做(没有特定的语言):
public void Update(date, somevar){
if(date > this.Date){
this.Var = somevar;
}
}
这个想法是,如果传递给函数的日期比当前对象中的日期更新,则更新变量。可以把它想象成缓存某些东西的基本方式。
现在,有趣的是,我知道 somevar
与this.Var
相比永远不会“老”,但它可能是相同的。因此,据我所知,检查日期毫无意义,因此程序执行无意义。
所以真正的问题是,无论以何种方式更好 - 每次调用Update时执行对this.Var
的写入,或者获取this.Date
,比较它,然后可能更好执行写入。只是在这里引入一些有趣的东西,如果要多次调用Update会怎么样?
如果我给出的例子毫无意义或有漏洞,我道歉;我想不出另一种举例的方法,但希望你能看到我想在这里提出的观点。
答案 0 :(得分:2)
除非由于某种原因,分配是一项昂贵的操作(例如,它总是触发数据库写入),否则这不会使您的程序更快。
将检查放入您的setter通常是为了强制执行数据完整性,即保留程序不变量,从而保护其他代码的正确性,这一点非常重要。