ドメイン駆動開発とテスト駆動開発
ドメイン駆動開発
ドメイン駆動設計とは開発手法の一つで,一言でいうと「オブジェクト指向プログラミングを最適化したもの」というイメージになる。
オブジェクト指向設計にはいくつかの原則と,有名なデザインパターンがいくつもあるが,オブジェクト指向設計という言葉が持つ意味は非常にあいまいさがあり,技術者それぞれで定義の異なるものである。
また,オブジェクト指向設計の原則やデザインパターンは,多くの指針や実装例が示されてはいるものの,ピンポイント的な実装例が多く,アプリケーション全体を示すものは少ない。保守性やテスト容易性を高めるために,アプリケーション全体をどのように作成し,どういったクラスをどこに配置するべきか?といったところまでは言及されていない。
そういったことはおそらく開発チームごとに話し合い,決定していくべき事なのかもしれない。ドメイン駆動開発とは,GOFのデザインパターンやマーチンファウラーのリファクタリング等,オブジェクト指向に関する書籍が成熟し,そのあと,集大成のような位置づけで発表されている。システム開発で解決すべきパターンを切り分け,不具合の発生しにくい設計手法を示している。
今回はそのドメイン駆動開発の設計パターンを元に,C#でテスト駆動開発を用いて実装する方法をポイントを絞って解説していく。
テスト駆動開発
テスト駆動開発とはプログラムコードをテストコードで検証しながら作成していく開発手法である。従来のプログラムコードをすべて書いてからテストを行うスタイルではなく,実現したい内容をまず数行のテストコードで表し,そのテストコードを成功されるために本番コードを実装するというやり方である。こうすることですべての本番コードはテストしやすいコードで書かれ,バグの混入にもすぐに気づくことができる。
テストしやすいコードというのはテスト容易性と表現され,今日のプログラミングでは非常に大事な要素である。また,プログラムは良いコードと悪いコードに分けることができるが,その指標の一つがテスト容易性といえる。またそれ以外にも保守性があげられる。プログラムコードの一部を変更した場合,どこにどのような影響があるかがすぐにわかる,不具合発生時に調査すべき個所がすぐにわかる,機能追加が容易にできる等が指標となる。
ドメイン駆動開発により,どこにどのようなクラスがあるかがすぐにわかるようになり,保守性が向上します。また,テスト駆動開発により,テスト容易性が上がります。今回はこのような開発手法をC#を使って順番に解説していきます。
- C#でドメイン駆動開発とテスト駆動開発で保守性の高いプログラムを書く!1
- C#でドメイン駆動をする前に良いコードと悪いコードの定義を理解しよう!2
- C#でドメイン駆動開発をやるうえで採用するアーキテクチャーに関して3
- C#でドメイン駆動開発をするうえで意識べきロジックの2つの種類④
- C#でドメイン駆動開発 アーキテクチャーの実装とテスト駆動での書き方を解説5
- C#でドメイン駆動開発 外部との接触箇所にRepositoryを使う!⑥
- C#でドメイン駆動開発Moqを使ったテスト駆動開発のやり方を解説!⑦
- C#でドメイン駆動設計UIとインフラストラクチャーを実装する方法⑧
- C#でドメイン駆動開発 Entityの書き方と使い方とテスト駆動!⑨
- C#でドメイン駆動開発ValueObjectでプログラムの複雑さを取り除く⑩
- C#でドメイン駆動開発 ViewModelの中に明細項目があるときの実装⑪
- C#でドメイン駆動開発 データ保存時のロジックのMoqの書き方!⑫
- C#でドメイン駆動開発【DDD】エラー処理とExceptionの書き方!⑬
- C#でドメイン駆動開発をするうえで私が参考にした書籍ランキング!