ドメイン駆動開発_フォルダー構成編_#51_タイマー処理はどこに置く?

当サイトではアフィリエイト広告を利用しています。

NDDD

今回は,タイマークラスはどこに置くのか?というお話をします。

タイマークラスとは?

タイマークラスとは,バックグラウンドで処理するクラスの事です。定期的にデータを収集して,何かのチェックをしたり,値を保持しておくような処理をする,画面とは別に,裏側で動作させる処理の事です。

どこに書くのがいいのか?

タイマー処理の中ではビジネスロジックを含むためドメイン層に置くのが良いように思うかもしれませんが,ユーザインタフェース層に置いたほうがプログラムの見通しが良くなります。当然ビジネスロジック部分はドメイン層に書けばいいのですが,タイマーの通知するイベントの部分だけはユーザインタフェース層に置きます。今回であればWinFormプロジェクトに入れます。

なぜユーザインタフェース層に入れるのがいいのかというと,例えば何も知らない状態から,ソースコードを呼んでプログラムを理解しようとする場合,ボタンクリックイベントなどのイベントから処理をたどります。ドメイン層に勝手に動作しているイベントがあると,アプリケーションのソースコードをすべて読まないと理解できないプログラムになります。

ボタンクリックイベントやバックグラウンド動作しているイベントはある一か所に集めて置き,アプリケーションで発生しているイベントを一目でわかるようにしておくことで,どのような時に,どのような処理が動作しているのかが,初めて見たプログラマーにも理解しやすいものになります。1000クラスや2000クラスある場合,すべてのクラスを理解するのは困難です。新規プロジェクトメンバーや,未来の保守するプログラマーのために,全体をすぐに理解できる造りにしておくことが大事です。そういった意味で,WinFormプロジェクトにイベントを集めておいて,知らないところで動作しているイベントは無いように作ったほうがいいのです。

BackgroundWorkersフォルダーの作成

WinFormプロジェクトにBackgroundWorkersフォルダーを作成します。今後,バックグラウンドで動作させる処理はすべてここに起点となるロジックのみをいれて,ビジネスロジックはドメインに置きましょう。

LatestTimerクラスの作成

BackgroundWorkersフォルダーにLatestTimerクラスを作成します。次回からLatestTimerの中身を作っていきます。