Это совершенно правильная техника ОО, хотя я думаю, что ее можно сделать немного более эффективной, если ленивую загрузку (чем это, по сути, и является) отложить до того момента, когда значение Bar
действительно понадобится.
private int foo;
private string bar;
public int Foo
{
get { return foo; }
set
{
foo = value;
bar = null;
}
}
public string Bar
{
get
{
if (bar == null)
bar = getStringValueFromDatabase(Foo);
return bar;
}
}
Edit: Я думаю, что это улучшение по сравнению с оригинальным кодом, хотя, как заметили другие, еще лучше было бы абстрагировать доступ к данным в отдельный слой.
Прикрепляю к посту несколько видео по теме: