続・自分的Best

先日のプランに書き残したものがあったので、補足します。


レイヤ別の役割:Controller(補足)

トランザクション制御ですが、これはControllerにのみ実装可、というルールを設けることにしています。
これは、Modelの用途に幅を持たるためと、複数のModelを使用して1つのイベントを処理するような場合に、トランザクション制御をModelで行えなくなるからです。ただし、ModelをラップするFacade/Adaptor的なモジュールを間にかませれば、そこでトランザクション制御を行わせられるので、Controllerに実装する必要はなくなります。

ただし、私にはFacade/Adaptor的なレイヤを間に差し込むと、「モジュール間のインターフェイスをしっかり意識した設計」が求められ、結果CFMLの利点である「殴り書きのような実装」が損なわれてしまうように感じます。アプリケーションがそれなりの大きさであれば、たとえCFMLと言えどもしっかりした設計が必要になるのは当然ですが、そこまで大きくないアプリケーションであるならば、かえって効率を下げてしまいます。
その為、私個人はControllerでトランザクション制御を実装し、FacadeもAdaptorも入れずに直接ModelをMockUpした方が良いと考えています。