プログラム設計の流れ
1. プログラムのレイヤー構造を検討
- アプリケーションの種類や利用するフレームワークに合わせたレイヤー構造を検討
- 手書きでラフな処理フローを書いて方向性をチェック
- 必要ならこの時点で一旦レビューをしてもよい
2. モジュール構造を定義
- 名前空間やそれに類するもの
- 実際にディレクトリとモジュールを作って収まりがいいか考えてみる
- 特定のフレームワークやアーキテクチャに沿って作るならあまり悩むことはないかもしれない
3. モジュール・インターフェイスを定義
- モジュール・インターフェイスを定義する
- この時点では具体的な処理を実装せずクラスとメソッドのガワだけでよい
- クラスベースの言語ならクラスとパブリックメソッド
- 関数ベースの言語ならモジュールと関数
4. モジュール・インターフェイスのレビュー
- モジュールの配置場所、モジュール/メソッドの粒度や名前などについてレビューを行う
5. メソッド内に処理内容をコメントで書く
- メソッドや関数内におおまかな処理の流れをコメントで記述する
- この時点でもまだ処理は実装しない(IDEやコンパイラの警告が出ないように、ダミーの戻り値を設定する程度はOK)
- 基本的な処理の流れが書けたらレビューに出す
6. 処理内容のレビュー
- 処理の流れに問題は無いか、必要な処理が抜けていないか、処理フローが大きすぎないかについてレビューを実施する
- それぞれ問題があれば修正する
- この段階で処理を実装しないのは処理を書いてしまうと手戻りのコストが大きくなってしまうため
7. テストコードの作成
- 必要であればモックやスタブを作成し、とりあえずプログラムが動くようにする
- 関数やクラス単位で動作チェックが可能になるようテストコードを準備する
- 一々、アプリケーションを立ち上げて実際に操作して動作確認をする...というのは非効率 + 問題を見落とす可能性が高いのでやめるべき
8. コーディングとユニットテストとリファクタリングを繰り返す
- ここまで来たら処理内容の実装を行う
- 基本的にはコメントで処理フローが書かれているので迷うことはないはず