ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

適切な設計およびコーディングをすることで、変更がしやすくなる

データをデータベースから取り出してCSV形式で保存するプログラムを作成しています。
データをデータベースに登録されたときに、同時に登録されたファイルも合わせてコピーもしています。

これまでの処理の流れ

特に要望がなかったので、
1.データベースからデータを取り出す。

2.取り出したデータを加工する

3.取り出したデータをチェックする。

4.チェック結果をログに保存する。

5.取り出したデータをCSV形式でファイルに保存する。

6.取り出したデータを元に、ファイルの保存元からファイルの保存先に、ファイルをコピーする。

7.ファイルのコピーに失敗したら結果をログに保存する。

8.最終データを処理するまで繰り返す。
といった流れをしていました。

要望された処理の流れ

お客さんから、ファイルのコピーが正常にできたら、データベースから取り出したデータをCSV形式でファイルに保存するようにという要望がありました。
要望を満たすための方法を考えたところ、以下のような流れに変わりました。
1.データベースからデータを取り出す。

2.取り出したデータを加工する

3.取り出したデータをチェックする。

4.チェック結果をログに保存する。

5.取り出したデータを元に、ファイルの保存元からファイルの保存先に、ファイルをコピーする。

6.ファイルのコピーに失敗したら結果をログに保存する。

7.ファイルのコピーが正常にできたら、取り出したデータをCSV形式でファイルに保存する。

8.最終データを処理するまで繰り返す。

太字の部分が当初と順番が異なり、アンダーラインが要望により追加された機能です。

f:id:AJYA:20161201054059j:plain
photo credit: yaph Perl malloc.c extract via photopin (license)

単純な機能の組み合わせなので変更が容易

なるべく単純、なるべく単機能なメソッドを作成するというのを常に考えています。
メソッドを順番に呼び出して、目的の結果を得るようにしています。
今回の要望の反映は、メソッドを呼び出す順番を変更して、判定条件を追加するだけでできました。
時間にして30分もかかっていません。
常に考えていることを実践することで、楽に対応ができました。