手続き型からモデル駆動へ
オブジェクト指向プログラミングが強力なのは、あるモデリングパラダイムに基いていて、モデルを構成する概念に実装を提供するからだ。(第一部 第三章より)
言うまでもなく、エヴァンス本中の例はjavaだし、オブジェクト指向を前提として書かれています。
よく、Rubyでは、、、PHPでは、、、Scalaでは、、、と聞かれますが、答えはいつもやってみたらいいですよ。と、答えています。
なんならVBSで軽くですが、やったことがあります。
オブジェクト指向をサポートする言語なら、程度の差はあれどできると思います。
ただ、普段、手続き型で書いている場合、最初はうまくいかないかもしれません。
当然、手続き型で書いていてはうまくいかないはずです。
モデル駆動設計も、Cなどの言語を使った場合には、限定的にしか適用できないが、これは純粋な手続き型言語と対応するモデリングパラダイムがないからだ。(第一部 第三章より)
プリント基板の例では、手続き型で書かれたスクリプトをモデル駆動で書き直す例が示されています。
一度、手続き型で書かれたソースコードをモデル駆動でリファクタリングしてみるのは大変お勧めです。
時間をかけて、全部書き直すということではなく、重用なドメインのコアの部分を抜き出して、または、抜き出しやすい箇所を選んで、一部を書き直してみるのです。
モデル駆動にしてからの変更のしやすさ、ルール、機能の追加のしやすさ、テストのし易さを感じることができるかと思います。
自分はこれを1万行を超えるVBSのファイルでやってみたことがあります。。。(かなり微妙だけど一応クラスが使える言語です。。。)
忘れないで欲しいのだが、こうしたモデルに基づく設計は一度に現れるものではない。(第一部 第三章より)
何度も本書でこれまでも述べられていましたが、反復を重ねて深いモデルになっていくのを忘れないということですね。