More Related Content
More from Yoshitaka Kawashima (20)
ソフトウェアにおける 複雑さとは何なのか?
- 3. 『A Philosophy of Software Design』John K. Ousterhout
● 「複雑さ」は理解や修正を難しくするソフトウェアの構造に関連したもの
○ (定義とし書かれているのはこれくらい
)
● 複雑さだと…
○ 単純な変更でもいろんな場所のコードを修正が入る
○ 認知負荷が高い
○ 分からないことが分からない
● 複雑さの原因は…
○ 依存性
○ 不明瞭さ
- 4. 『Domain Driven Design』Eric Evans
● ビジネスルール間に矛盾が発生すると複雑
● 同じ言葉に違う意味を持たせていると複雑
● Value Objectで良いものにIDを持たせるのは複雑
一貫性がないと複雑
→ ユビキタス言語?
- 6. 複雑さの言い換え
● 使いにくい
● 理解が難しい
● メンテしにくい
● 長ったらしい
● 覚えきれない
● 実行が難しい
● 管理できない
● 色々混ざっている
● たくさんの要素がある
● 一貫性がない
● 込み入ってる
● ゴテゴテしている
● 不透明
John Cutlerさんのツイートの裏返し
- 19. 『Clean Code』Uncle Bob
● 道具は道具箱の中に整理され、それぞれが明確に定義されラベル付けされた部品を含む多く
の小さな引き出しが必要なのか?それとも、何でも放り込んでおけるような引き出しがいくつか
欲しいのか?
● 複雑さを整理するために、適切なサイズの前者が必要
- 20. 柔軟性と複雑さ(単純さ)のトレードオフ
例えば、「ピザ」のモデルを考える
Cheese Pizza {
price: MonetaryAmount;
cheese: Weight;
}
Pizza {
price: MonetaryAmount;
dough: Dough;
topings: Topping[];
}
Product {
price: MonetaryAmount;
ingredents: Ingredient[];
}
柔軟性
複雑さ
(2種類の複雑さの総量 )
(潜在的に)表現可能なモデルの範囲
A) ピザの種類ごとに型を用意する B) ピザで1つの型を用意する C) ピザ以外の商品も表現できるモデル