最新 RSS

horiday blog

2006/06/27

プログラムの書き方

最近多分野の方と共同でプログラムを書いているのですが,ひとのプログラムというのはなかなかむつかしいですね.

部分的なコードをみて「こうした方が良いかな」と思って編集しても,他の関数,ルーチン,外部変数との依存関係を解決できずにプログラムがまともに動かないことが多々あります.

結局臭いものには蓋をするじゃないけど,上位の関数などでラッピングして処理しています...

このあたりの話は昔何かの資格の勉強で読んだ記憶がありますが,いまさらながら結構重要な話だと認識しました.もともと人間は情報をまとめるのが苦手なので,関数のまとめ方,機能のまとめ方なんかはコツというかセンスみたいなものが出る話ですね.

下記は資格の本からの内容です.うるおぼえだけど,なつかしい...

モジュール強度(高い順)

機能的強度: 1つの固有な機能のみを持つモジュール.モジュール内のすべての要素がその機能に関連しているモジュール.

情報的強度: 同じ構造のデータを扱う複数機能を持ったモジュール.

連絡的強度: ある機能の結果が次の機能の入力になるなど,手順的強度に加えデータの関連のあるモジュール.

手順的強度: バッチ処理のように複数の機能を逐次実行するが,各機能間の関連性は弱いモジュール.

時間的強度: 初期設定などの特定のタイミングで実行されるがほかの機能に関して弱い関連性しかもたないモジュール.

論理的強度: 関連する複数の機能をまとめて作ったモジュールで,一つのインターフェースで複数の機能を実現するモジュール.

暗号的強度: 単純にいくつかの関数に分割した場合など,関数の機能を明確に出来ないモジュール.

モジュール結合度(低い順)

データ結合: モジュールで必要なデータのみを引数とする結合.独立性が高く,再利用が容易.

スタンプ結合: パブリック変数でない同じデータ構造を引数として共有する結合.ただし,直接必要としないデータ(関連するほかのモジュールで利用するデータ)を含む.

制御結合: モジュールの動作を決定する情報を引数で渡す結合.引き数により制御されるためモジュール間の関連性が高い.

外部結合: パブリック変数を使用し,モジュール間でデータを共有する場合.パブリック変数をどう使用しているか分かりづらく,再利用しにくい.

共通結合: 共通のメモリ領域を共有するような場合.

内容結合: ほかのモジュールの内容を直接参照する場合やモジュールの一部を共有する場合.