色々な事情で、コンストラクタの初期化処理後にプロパティの値を生成する処理を1インスタンスにつき1回だけ行いたいケースがありました。
そんなときは値をキャッシュする手があるということを先輩社員にアドバイス頂きました。(Ruby だと 自己代入 ||=
みたいな処理)
例: Fugas という配列の値をキャッシュする場合
class Hoge
{
private Fuga[] _fugas;
private Fuga[] Fugas
{
get
{
// Fugas は一度だけ作成
if (!(_fugas is null))
{
return _fugas;
}
// _fugas の値をセットする何らかの処理
// _fugas は何らかの理由でコンストラクタで値がセットできない値を想定。
// 処理は省略
return _fugas;
}
}
}
ただし、このようなケースが発生する時点で根本的な設計に問題がある可能性もあるかもしれません。
ですがアイディアとして知っておいて損はないテクニックだなと思いました。