2013/09/01

[VBScript]俺俺コーディング規約

私的今更VBScriptのコーディング規約です。
たかがVBScriptなんで、どちらかというと「動けばいい」って思ってるんですが、ちょっとくらいはルールを作っておかないと後のメンテナンスで死亡するのは目に見えているので。



戻り値がない関数はサブルーチンで作る
VBScriptは関数のようなものをFunctionで定義したりSubで定義したりできますが、このうちFunctionで定義すると値を戻すことができ、逆にSubで定義すると戻り値を作れません。
これを戻り値の有無を明示するためにちゃんと使い分けます。
なお、以前のエントリに貼り付けたコードで関数にJavadocのようなコメントを書いていますが、私個人的には必須とは思っていません。があった方がわかりやすいと思います。
それを書いたからといってコードヒントがでるわけでもなんでもないんですが、共通言語ってやつです。
(そもそもterapadで編集してるのでもともとコードヒントなんて出ません。)

Option Explicitは書く
こうすることで宣言(Dim)されていない変数を使えなくなります。
数行程度のコーディングでは書かないこともありますが、20行程度を超える場合は基本的には書くようにしています。
宣言する場所をちゃんと考え、変数のスコープを明示するためです。

関数の()はできるだけ省略しない
既定の関数や独自の関数で引数がない場合は()を省略できます。
例)NOW ← NOW()の省略
でもやはりこれも明示すべきだと考えます。例えば
If HasError Then ~
If HasError() Then ~
となっていて後で見た時にどちらが解読しやすいかという話です。

JScriptで書かない
JScriptの方がJavaScriptの記法に準拠しているのでとっつきやすい人も多いと思いますが、VBScriptと実装方法が違い、JScriptでは使えない機能もあるし挙動が変わってしまう場合もあります。
個人的には中途半端な実装だと思っており、どうせだったらVBScriptで書いてしまう方がよいと思います。

オブジェクトの解放を信頼する
サンプルコードを見ると
Set objShell = Nothing
と書いてオブジェクトを解放するよう書かれている場合が多いですが、特に必要がない限りは省略してよいだろうと考えます。
これを書くことでのメリットが動作上もコーディング上もあまりに少ないと思うからです。

このことはScripting Guysも言っています。(誰?)
スクリプト センター > ラーニング > Sesame Script > クラスはセッション中

(注:JScriptで書く場合はガベージコレクションを明示する必要がある場合があります)

0 件のコメント:

コメントを投稿