機能分割のすすめ
「機能分割」とは、具体的にはプロシージャを呼び出す単位より細かい単位で作成することで、その単位は「機能」として明確に名前が付けられるものにすることを言います。
- プログラム開発の部署では、「コーディング規約」などに次のような規則を盛り込むことがあります。
- GoToの使用は禁止。
- 1つのプロシージャの行数の上限を設定する。
- 判断文のネストの階層数を制限する。
これらは、プロシージャの1つ1つを小さいものにすることで、見やすいものにすることを目的としています。
- 「構造化プログラミング」では、上のような単なる「数値制限」ではなく、プログラムを処理構造から考えて、機能を「箱」に描いていきます。「箱」は上下の階層を持ち、上の「箱」は下の「箱」を呼び出しますが、この時、上の「箱」は制御、下の「箱」は処理という役割りになります。
それぞれの「箱」には、その機能を示す明確な名前が付けられて、階層構造を図式化したものをプログラム設計書に添付します。これを「モジュール構成図」などと呼びます。
- 「モジュール構成図」の「モジュール」とは、この「箱」のことです。コンピュータ言語や開発方法によって「モジュール」といったり、場合によっては「ルーチン」といったりします。VBAでは、これが「プロシージャ」になります。
- 簡単な処理であれば、呼び出すプロシージャの中で全てが完結してしまいますが、大きな仕組みを作るようになってくると、こういったプログラムの構造を考えなければならないようになります。細かい機能の「箱」はいわば「部品」であり、その「部品」の実装方法が「モジュール設計(構成)」で、その設計に従って作成したプログラムが「製品」となります。
- 「部品」に分けることは、その「部品」単位で動作確認(テスト)することで「製品」の品質を向上できます。また、機能が明確な「部品」であれば、他の「製品」を新たに作る時に流用でき、その時その「部品」は動作確認(テスト)済みなので、全体のテスト作業が軽減できるようになります。
- 実は、「構造化プログラミング」というだけで本1冊できてしまう位大きな内容で、このコーナーで説明し切れるものではありません。ここでは、そういう考え方でプログラム全体を捕らえながら作成していくものだということをご案内しておきます。