DSLs Chapter3
を読んだ。
Domain-Specific Languages (Addison-Wesley Signature Series (Fowler))
- 作者: Martin Fowler
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2010/09/23
- メディア: ハードカバー
- 購入: 1人 クリック: 55回
- この商品を含むブログ (10件) を見る
DSLsを実装した際のメカニズムの話。(Text DSLをパースして、Syntax Treeつくって、Semantic Modelをつくるパターンの話、textの文法の話。パース後に Syntax Treeをつくらない代わり、Symbol Teableのパターン、Macrosのパターンの話 )
TDD好きなら、3.6 Testing DSLsがおすすめ。
1章の 状態遷移の例で話が進む。 xUnit Patterns の Custome Assertionなどを駆使して、act, assert部分を簡潔に記述したのち、まだ複雑さが残った arrangeの部分で DSLに書き換えるストーリー。
arrange 部分が 通常の Command-query APIじゃ 簡潔に書けない。かといって、DIコンテナ側のXMLでオブジェクトを組み立てるのも何か違うなぁは、私自身も何度か経験していた。
なんだか何かやだなーと思っていたので、うんうんと感じるところがある。
この例だと、独自文法の文字列が描かれていた。 過去のプロジェクトで、Expression Builderを試した事はあるが、今イチ使いこなせなかったのを思い出した。
その後、複雑な構造を持つオブジェクト群 を assertしたいときに役立ちそうなアプローチの話、DSLの記述が invalidなケースのテストの話が続く。