社内SEの徒然なる日記

ExcelVBAのコーディング規約を作ってみた No.7 プロシージャ

■ プロシージャ

今回はプロシージャの規約を考えました。考えたと言っても、ここまで定義してきた規約の流れをプロシージャにも適用するだけなんですけどね。

そもそも、今回はロジック部分に強い縛りを入れる予定はないので、命名規約が中心になるのは仕方のないところではないでしょうか。

■ 命名規約

結局、こんな感じに落ち着きますかね。
1.先頭文字は英字の小文字。
2.半角英数字と全角文字のみ使用する。
3.記号は使用しない
4.意味の区切りで先頭文字を大文字、以降を小文字


もうちょっと縛れますが、この程度が無難だと思います。実際には変数の命名規約とほとんど同じですが、先頭文字を縛るのはやめました。

ルールは可能な限り少ないほうがよく、変数とプロシージャを読み間違えるほうが難しいという判断です。

■ 引数

引数の命名規約は前々回(ExcelVBAのコーディング規約を作ってみた No.5 変数の命名規約)で規定していますが、使い方は書いていませんでした。まぁ、使い方といっても、引数の受け取り方くらいですかね。

引数の受け取りには、値渡しと参照渡しがあり、VBAの場合はプログラミング上で明記することが可能です。引数の前にByRefとつければ参照渡し、ByValとつければ値渡しになり、省略した場合は参照渡しでしたかね。

今回の規約では「原則として参照渡しを使用」「渡し方(参照渡し、値渡し)を明記する」としました。

Private Sub test(ByRef pTe As Integer, ByVal pTime As String)


■ コメント

放っておくと、コメントを一切書かない奴が出るので、コメントの記述は規約で強制することにしました。書く内容はケースバイケースでしょうが、機能、引数、返り値、概要、この程度があれば十分でしょうね。

' 機能      : 配列の次元数を調べる関数
'
' 返り値 : Integer型 配列の次元数
'
' 引き数 : pTbl - 配列
'
' 機能説明 : 引数として指定された配列の次元数を返却します
'
' 備考 :
'

Function getTableDimension(ByRef pTbl) As Integer


■ 後書き

私がVBAで気に入っているのは、値渡しと参照渡しをプログラマーが自分で設定できるところです。私は10年近くjavaでプログラミングをしていますが、未だにこの辺りでハマることがあります。

この辺り、「javaは値渡しだけ・・・」「参照型が・・・」とか色々と長い話になりそうですが、私に言わせるとプログラマーにそこまで求める言語仕様に問題を感じます。重要なのは「呼び出し先で引数の値を変更できるのか?」であって、内部的な動作なんてどうでも良い気がしてなりません。

・・・・・・・長い話(愚痴)になりそうなので、ここまでにします。

何にせよ、値渡しと参照渡しが分かりやすいのはVBAの良いところだと思います。

前回:ExcelVBAのコーディング規約を作ってみた No.6 定数
次回:ExcelVBAのコーディング規約を作ってみた No.8 シート、セル

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する