Как стать автором
Обновить

Ленивые свойства объекта

Время на прочтение2 мин
Количество просмотров1.7K
Возможно, не самый умный экземпляр для линча, но хотелось с чего-нибудь начать)

Для красоты кода и удобства написания модулей, реализовал классы по работе с отдельными информационными сущностями. К примеру, такая вещь как язык интерфейса имеет свой ID, и для большинства операций этой информации вполне достаточно. В то же время, возникают редкие ситуации, когда требуется получить дополнительные сведения о нём (RFC-код, к примеру, узнать который можно, обратившись к отдельной таблице или файлу). Не особо задумываясь, поставил инициализацию переменных в конструктор класса… Проблемы начались, когда переехал на машину с тормозящим SQL-сервером (очень полезное занятие, как оказалось) – тестовая машина падала в таймаут при совершенно безобидных операциях. Не комильфо – процессорное время и SQL-соединения хотелось бы использовать более рационально :) Но использовать специальные методы для подгрузки вроде Fill() тоже не особо хотелось. В итоге пришел к наиболее простому (на мой взгляд) решению из доступных:

public class Лентяй
{
private String коллектор;

  public String Значение
  {
    get
    {
      if (коллектор == null)
      {
        коллектор = РесурсоёмкийКодПолученияИнформации();
      }
      return коллектор;
    }
  }
}


Таким образом, практически не производится изменений кода (при создании свойства с именем старой переменной, и последующем переименовании переменной), и в отдельных случаях избыточная нагрузка снижается до нуля. Но сомнения насчёт рациональности всё же остались.
Теги:
Хабы:
Всего голосов 7: ↑6 и ↓1+5
Комментарии42

Публикации