Здравствуй, Тостер!
Работая над очередной задачей, допустил баг (допустил || написал ?) и сам же исправил его. И тут я понял какую опасную вещь написал и задался вопросом как правильно такое писать, чтобы если кто будет работать с этим кодом, не наступил на те же грабли.
Есть код:
public abstract class A
{
protected Foo Bar = new Foo();
protected bool isDataActual = false;
public Foo bar
{
get
{
if (isDataActual)
{
return Bar;
}
else
{
calculateData();
isDataActual = true;
return Bar;
}
}
}
}
В чём заключался баг? В моём классе наследнике, во время выполнения calculateData(), я вместо обращения к Bar, обращался к bar, что опять вызывало calculateData, и так до переполнения стека.
Вопрос вот в чём, как в этом случае стоило написать код так, чтобы другие программисты в своих классах-наследниках не могли допустить ту же ошибку. Случай-то типовый, должны же быть какие-то общепринятые решения.