現在、広く使用されているクラスを変更して、高価な初期化の多くをクラス コンストラクターから Lazy Initialized プロパティに移動しています。以下に例を示します (c# の場合):
前:
public class ClassA
{
public readonly ClassB B;
public void ClassA()
{
B = new ClassB();
}
}
後:
public class ClassA
{
private ClassB _b;
public ClassB B
{
get
{
if (_b == null)
{
_b = new ClassB();
}
return _b;
}
}
}
私が変更しているクラスには、これらのプロパティがかなり多くあり、特定のコンテキストでは使用されないものもあります (したがって遅延)。ただし、それらが使用されると、繰り返し呼び出される可能性があります。
残念ながら、プロパティはクラス内でも使用されることがよくあります。これは、プライベート変数 (_b) が初期化されずにメソッドによって直接使用される可能性があることを意味します。
クラス内でパブリック プロパティ (B) のみを使用できるようにする方法はありますか?
これはプログラマーから再投稿されたものです (明らかに主観的ではありません): https://softwareengineering.stackexchange.com/questions/34270/best-methods-for-lazy-initialization-with-properties