32
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

値をキャッシュするという発想

Last updated at Posted at 2024-03-11

色々な事情で、コンストラクタの初期化処理後にプロパティの値を生成する処理を1インスタンスにつき1回だけ行いたいケースがありました。

そんなときは値をキャッシュする手があるということを先輩社員にアドバイス頂きました。(Ruby だと 自己代入 ||= みたいな処理)

例: Fugas という配列の値をキャッシュする場合

class Hoge
{
    private Fuga[] _fugas;

    private Fuga[] Fugas
    {
        get
        {
            // Fugas は一度だけ作成
            if (!(_fugas is null))
            {
                return _fugas;
            }

            // _fugas の値をセットする何らかの処理
            // _fugas は何らかの理由でコンストラクタで値がセットできない値を想定。
            // 処理は省略

            return _fugas;
        }
    }
}

ただし、このようなケースが発生する時点で根本的な設計に問題がある可能性もあるかもしれません。

ですがアイディアとして知っておいて損はないテクニックだなと思いました。

32
19
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?