プログラムを作成する時に機能単位にメソッドを作成することがよくあります。そうすることによって、同じ処理を何度も書かなくてもよくなります。また、いろいろな場所からそのメソッドを呼ぶだけで、同じ処理が出来るようになります。これは構造化プログラミングのすばらしいところです。

 しかしメソッドを呼ぶだけでいいからといって、あちこちで同じメソッドを呼んでいないでしょうか?もし一つのメソッドだけ呼べば処理が完結していたものが、必ず別の処理も合わせて行わなければいけなくなったとします。そうした場合そのメソッドを呼んでいる全ての箇所に対して、もう一つのメソッドを呼ぶ処理を追加しなくてはいけません。これは非常に大変です。

 そこでメソッドを呼ぶための別のメソッドを用意します。そうすることにより、そのメソッドを変更するだけで修正が出来るようになります。また、メソッドを別のオーバーロードされた形で呼ぶように変更したいといった場合なども、同じようにすることで簡単に修正ができます。

 それでは例を見てみましょう。


・同じメソッドを複数の箇所から読んでいるパターン


 これは一つの機能を持ったメソッドです。

Public Sub UkiUki
    ' ウキウキする機能を記述
End Sub

 そして次にこのメソッドをあちこちで呼んでいる処理の例です。

Public Sub Hoge
    ...
    ' メソッドを呼ぶだけ
    Me.UkiUki
    ...
End Sub
Public Sub Foo
    ...
    ' メソッドを呼ぶだけ
    Me.UkiUki
    ...
End Sub

 もしここで、 UkiUki メソッドを呼んだ後に WakuWaku メソッドも必ず呼ばなくてはいけなくなったとします。そうした場合に次のようにしていては大変です。

Public Sub Hoge
    ...
    ' メソッドを呼ぶだけ
    Me.UkiUki
    ' WakuWaku メソッドを追加
    Me.WakuWaku
    ...
End Sub
Public Sub Foo
    ...
    ' メソッドを呼ぶだけ
    Me.UkiUki
    ' WakuWaku メソッドを追加
    Me.WakuWaku
    ...
End Sub

・メソッドを呼ぶ別のメソッドを用意しているパターン


 UkiUki メソッドを呼ぶ別のメソッドを用意します。

' UkiUki メソッドを呼ぶメソッド
Public Sub Feel
    ' メソッドを呼ぶだけ
    Me.UkiUki
End Sub

 そして、UkiUki メソッドを直接呼んでいた処理は UkiUki メソッドを呼ぶメソッドを呼ぶようにします。

Public Sub Hoge
    ...
    ' メソッドを呼ぶメソッドを呼ぶ
    Me.Feel
    ...
End Sub
Public Sub Foo
    ...
    ' メソッドを呼ぶメソッドを呼ぶ
    Me.Feel
    ...
End Sub

 すると修正する箇所は Feel メソッドだけになります。

Public Sub Feel
    ' メソッドを呼ぶだけ
    Me.UkiUki
    ' WakuWaku メソッドを追加
    Me.WakuWaku
End Sub