Slide 49
Slide 49 text
ルール9:
不正な状態が表せないようにデータ型の選択/
定義で制限すること
リファクタリング前:
data class User(
val id: UserId,
val isRegistered: Boolean,
val isActive: Boolean,
val joinedAt: LocalDateTime?,
val leftAt: LocalDateTime?,
) {
companion object {
fun registeringUser(id: UserId): User =
User(id, false, false, null, null)
fun activeUser(id: UserId, /*
略 */): User =
User(id, true, true, joinedAt, null)
fun inactiveUser(id: UserId, /*
略 */): User =
User(id, true, false, joinedAt, leftAt)
}
}
49