Ich bin gerade dabei, eine weit verbreitete Klasse zu ändern, um so viel von der teuren Initialisierung aus dem Klassenkonstruktor in Lazy Initialized-Eigenschaften zu verschieben. Unten ist ein Beispiel (in C#):Methoden für Lazy Initialisierung mit Eigenschaften
Vorher:
public class ClassA
{
public readonly ClassB B;
public void ClassA()
{
B = new ClassB();
}
}
Nach:
public class ClassA
{
private ClassB _b;
public ClassB B
{
get
{
if (_b == null)
{
_b = new ClassB();
}
return _b;
}
}
}
Es gibt eine faire einige dieser Eigenschaften in der Klasse bin ich zu verändern, und einige werden in bestimmten Kontexten nicht verwendet (daher die Faulheit), aber wenn sie verwendet werden, werden sie wahrscheinlich wiederholt aufgerufen.
Leider werden die Eigenschaften oft auch innerhalb der Klasse verwendet. Dies bedeutet, dass die private Variable (_b) möglicherweise direkt von einer Methode verwendet werden kann, ohne dass sie initialisiert wird.
Gibt es eine Möglichkeit, nur die öffentliche Eigenschaft (B) innerhalb der Klasse zur Verfügung zu stellen, oder sogar eine alternative Methode mit der gleichen Initialisierung, wenn benötigt?
Dies ist aus Programmierer (nicht subjektiv genug scheinbar) reposted: https://softwareengineering.stackexchange.com/questions/34270/best-methods-for-lazy-initialization-with-properties
@chibacity: Danke für den retag –