---
# System prepended metadata

title: 2021-04-22 第10回メンターセッション
tags: [Team-2]

---

# 2021-04-22 第10回メンターセッション

## 項目

### 集約について
#### 1
- 読み込みは考慮せず、書き込みだけで良い
    - 複数集約をまたいだ検索においてページネーションができない
    - ただ、CQRSがある前提で考えるのは良くないという説もある

#### 2
- 内部オブジェクトを単体で外部で使いたい時は、集約を見直す方が良いかも？
- ルートエンティティから内部オブジェクトを取得するのはOK
    - 内部オブジェクトのゲッターなら直接触ってもいいかも？ルールを統一しなければセッターも直接さわる人が出てくるので禁止するのもあり。
- 内部オブジェクトの生成はファクトリでもコンストラクタでもOK

#### 3
- 必ず担保したい整合性があるなら同じ集約
    - 逆にデータが多すぎる場合は同じ集約にするとメモリが枯渇するので厳しい

#### 4
- これでOK

#### 5
exportしなければファイル内で完結する

### 非同期処理の例外処理
- ネストが浅い方が読みやすいので,promiseはあまり使わない
- 直列に扱えないケースにおいてはPromiseを許容するしかない
- Promise.all()はたまにつかう
- then()でthrowするときにstacktraceがうまく使えない
    - Promiseを定義すると、エラー発生時のスタックトレースを出すために、callbacktrace?に保存されるのでメモリがちょっと無駄
- forEachはawaitが効かないので昔ながらのforloopを使う

### penpenのモデル

```typescript=
class Task {
  private nextSendTimeUnixTime: number;
  private sendIntervalCron: string; // * * 3 * 5 (cron)
  private body: string;
}
```

###### tags: `Team-2`
