## 気づき
- 何を公開にして、何を非公開にするかの肌感覚を持つ
- `type StudentStatus = "在籍中" | "休会中" | "退会済" | "卒業済";` 👈これってexportすべき?
- 値オブジェクトとUnion型の使い分けは?
- exportすると、利用者側がこの型の変数を宣言できる
- この変数を宣言するタイミングって、どのタイミングだろう・・・
- [enum, union, as constの使い分け](https://zenn.dev/arfes/articles/e90c3b0bc30b08)
- 参考になった。使い分けの仕方をあまり理解できていなかった
- 基本はunionでよさそう
- `MailAddress.create(address)` と `new MailAddress(address)` のどっちがよいか?
- [github commit ドメイン層のstudentとemail-address](https://github.com/kmishima16/praha-challenge-ddd/commit/6276ccc8037d3b04626edcf7b699d7fe0963bcb2#diff-026690ea86ca7b4beded0940a86d23bccb0bdfb30fd4bfad6801af1e378b5ae6R4-R13)
- `readonly id`と `private id` と `#id`の違いは?
- readonly: 外部クラスから読み取り可能
- private: アクセス修飾子 クラス内部からのみアクセス可能
- `#id`: ECMAScriptのプライベートフィールド JSの言語レベルで強制されるプライベート コンパイル後のJSでもアクセスが出来ない
- リポジトリの型はプリミティブ型にすべき?値オブジェクトにすべき?
- `invoke`と`execute`の違いは?
- どちらも実行するだけど、プラハのテンプレートだとinvokeを使っていた
- taskとassignmentの命名、逆だった
- assignmentは「課題」という意味なので、現在の進捗状況という意味でtaskを使った方が認識にズレがなさそう
- 変更前
- task: プラハの課題マスタ
- assignment: 各生徒の現在のtaskの進捗状況
- 変更後
- assignment: プラハの課題マスタ
- task: 各生徒の現在のtaskの進捗状況