Запросы HTTPS не кэшируются настолько передающие , If-Modified-Since не имеет никакого смысла. Не кэширование является предосторожностью безопасности.
Вы получаете исходную / двоичную совместимость, если позже вам понадобится добавить другое поведение, вы можете добавить точки останова, и это просто философски чище (заботьтесь о поведении, а не о механизме хранения).
Обратите внимание, что вам не нужен весь последний блок в C # 3:
public string CustomerName { get; set; }
См. мою статью «Почему свойства имеют значение» для получения дополнительной информации.
Вы можете переопределить или хотя бы создать «новое» свойство в производном классе
На этом этапе люди ожидают, что свойства будут открыты, а поля будут скрыты. Если кто-то собирается поразмыслить над вашим классом (это становится все более и более распространенным с такими инструментами, как Castle Windsor, NHibernate), есть огромная разница, они, скорее всего, не будут проверять открытые поля.
Это в основном ошибка Java. Во многих других языках (Python, Delphi, Groovy) компилятор сгенерирует для вас геттеры и сеттеры , если вы не предоставите код.
Это означает, что вы можете использовать «общедоступное» поле в Groovy и компилятор незаметно сгенерирует и вызовет установщик / установщик. Если вам нужно совершить дополнительную магию при изменении поля, вы можете ввести специализированный сеттер, и все будет работать.
Это одна из тех вещей, где реальность вступает в противоречие с замыслом. Разработчики Java не хотели, чтобы компилятор делал то, чего вы не видите. То, что много лет назад казалось хорошей идеей, оказалось не слишком удачным.
Вы также можете предоставить базовую проверку с помощью свойств. Например, чтобы предотвратить установку свойства в недопустимое состояние, например отрицательное значение высоты:
private int height;
public int Height
{
get{ return height; }
set
{
if (value > 0)
{
height = value;
}
}
}