Бессмысленные проверки геттера при обновлении объекта - PullRequest
0 голосов
/ 19 декабря 2011

Надеюсь, это не покажется глупым или педантичным вопросом, но мне любопытно.

Иногда я буду в ситуации, когда свойства существующего объекта могут нуждаться в обновлении новыми переменными,и я сделаю это так (без языка):

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

Идея состоит в том, что если дата, переданная функции, является более новой, чем дата в текущем объекте, переменная обновляется,Думайте об этом как об основном способе кеширования чего-либо.

Теперь, интересная часть состоит в том, что я знаю somevar никогда не будет "старым" по сравнению с this.Var, ноэто может быть то же самое.Так что, насколько я вижу, проверка даты бессмысленна и, следовательно, бессмысленная операция для программы.

Итак, в чем дело, лучше ли - каким-либо образом - выполнять записьна this.Var каждый раз, когда вызывается Update, или this.Date сравнивает его, затем возможно выполняет запись.И просто добавьте сюда кое-что интересное, что, если Update нужно будет вызывать несколько раз?

Если приведенный мной пример не имеет смысла или в нем есть дыры, я прошу прощения;Я не могу придумать другой способ привести пример, но, надеюсь, вы поймете, что я пытаюсь здесь подчеркнуть.

1 Ответ

2 голосов
/ 19 декабря 2011

Если по какой-либо причине присваивание не является дорогостоящей операцией (например, оно всегда запускает запись в базу данных), это не ускорит вашу программу.

Целью установки проверок в ваших установщиках обычно являетсяобеспечить целостность данных, т. е. сохранить программные инварианты и, следовательно, правильность вашего другого кода, что гораздо важнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...