Slide 10
Slide 10 text
© Chatwork
ドメインロジックが手続き型で書かれている…
● ドメインロジックが手続き型。これは貧血症オブジェクトでありテーブルモデ
ル…。このようなコードをアプリケーションサービスに書かれている…
// 合計金額を計算
val totalPrice = cartItems.foldLeft(0) { case (r, e) =>
r + resolvePrice(e.itemId) * e.quantity
}
// 上限金額を超えていないなら
require(totalPrice + resolvePrice(4) < cart.limitPrice)
// カートにアイテムを追加
val newCartItems = cartItems :+
CartItem(id = 1, no = 4, itemId = 4, quantity = 1)
val now = Instant.now
val cart = Cart(
id = 1, userAccountId = 1,
limitPrice = 100,
createdAt = now, updatedAt = now
)
val cartItems = Seq(
CartItem(id = 1, no = 1, itemId = 1, quantity = 1),
CartItem(id = 2, no = 2, itemId = 2, quantity = 3),
CartItem(id = 3, no = 3, itemId = 3, quantity = 5)
)