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的な)位にしか使ってこなかった人に届くと嬉しいです。