省略してはいけない。(VB6)

VB6の話。

VB6はメソッドの引数につけるByVal,ByRefを省略するとByRefでした。

そこで、こんなコード。

(良いサンプルが思いつかなかった・・・)

Private Sub やってはいけない(hoge As String,RecordCount As Integer)
RecordCount =  なんらかを実行して件数を返すらしい(hoge)
End Sub

引数として渡されたQueryを実行し、

RecordCountに実行結果を返しているらしいが、

やるなら、

Private Sub やってはいけない(ByVal hoge As String,ByRef RecordCount As Integer)
RecordCount =  なんらかを実行して件数を返すらしい(hoge)
End Sub

と書いておかないと、

Queryは値渡しで使われるだけ

RecordCountは参照渡しで、やってはいけないサブプロシージャ内でセットされる。

という事が読み取れない。

実際は、参照渡しは、それが回避不可能な時のみ利用するに限るので、

下記のように引数で値を返さないように修正する。

Private Function やってはいけない(ByVal hoge As String)  As Integer
Dim recordCount As Integer
recordCount =  なんらかを実行して件数を返すらしい(hoge)
やってはいけない = recordCount
End Function

値渡し、参照渡しの宣言を省略しないでね。

参照渡しは回避できるなら回避しようね。

ということ。

Share