省略してはいけない。(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

値渡し、参照渡しの宣言を省略しないでね。
参照渡しは回避できるなら回避しようね。

ということ。