LoginSignup
0
1

More than 3 years have passed since last update.

「public なフィールド」 より強い < 「{ get; private set; } プロパティ」 より強い < 「readonly」が良さそう

Last updated at Posted at 2019-12-07

Unity #2 Advent Calendar 2019 2日目を、1週間過ぎました。。


フィールドを、public で他のクラスに公開するのは良くないよ!

public string itemName;

自動実装プロパティで、setのアクセスレベルを設定できるからこう書くといいよ!

public string ItemName { get; private set; }

という感じの書き方をよく見かけていたので
そんな感じで使っていましたが、

それより、「readonly」を使うと良さそうです。

public readonly string itemName;

うんうん。

MonoBehaviour を継承したクラスは、コンストラクタ使えないじゃん?

これは極端な思想だと思う人もいるかもしれないですが、
(そこまでしなくてもいいと思う人もいるかもしれないですが)
MonoBehaviour を継承したクラスには、[SerializeField] の変数だけあれば良いと思います。
MonoBehaviour を継承したクラスには、readonly にしたいような変数は置かない。

  • 一時的な状態を格納する変数は、ViewModelとして別のクラスに持たせる。
  • 最初に初期化してその後変更しない変数は、Modelなど別のクラスに持たせて「readonly」にする。

逆に、この2つを分けないと、神なビューが出来上がりますよね。
コンポーネントを細分化しても、それだけでは、神なコントローラーが出来上がりますよね。

とするとやっぱり、readonly にしたいような変数はMonoBehaviourを継承したクラスには置かないほうが良さそうです。

以上です。
readonlyを定数(const的な)位にしか使ってこなかった人に届くと嬉しいです。

0
1
0

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
0
1