プログラムの動作に影響しない注釈を残すことができます。プログラムの内容を説明したり、デバッグや修正のために一時的にコードを無効化ときにも使えます。
- 構文
- // コメント
- 引数
- 戻り値
コメントとは
コメントとは、プログラム内に書く注釈のことです。行の途中で//を記述することでそれ以降はメモとして機能します。行の先頭からでも途中からでも記述できますがコメントの後ろに実行するプログラムを書くことはできません。何を記述してもプログラムの動作に影響を与えることはありません。
文字が詰まって見えるため当サイトでは基本的に//のあとに半角スペースを入れてます。
//コメント
// コメント
メモを残す
プログラムを書くのは自分だけで他人に見せるけでもないし必要ないという人もいるかもしれませんが、自分で書いたプログラムでも時間が経ってから見ると何の処理をしているのかわからなくなることがよくあります。コメントはそういったプログラムの理解を助けるメモを残すために使います。
例えば、以下のように変数が何を表しているのかメモを残したりするのに使います。
CONST x = 3.14 // 円周率
見てすぐに理解できるようなコメントを書くことも重要ですが、まずできるだけコメントがなくても理解できるようなプログラムを書くことが大前提です。変数名(定数名)を適切に付けていればコメントは不要になります。円周率\(\pi\)は一般的にpiという名前を使います。
piという変数名で値が3.14だと大体の人が円周率の値を表していると理解できると思います。
CONST pi = 3.14
連続する複数の行に対してコメントを記述する場合は、コメントの開始位置を揃えると見やすくなります。
CONST pi = 3.14 // 円周率
CONST e = 2.71828 // 自然対数
プログラムに影響しないのでいくら書いても動作に問題はありませんが、コメントを書き過ぎると可読性やメンテナンス性を低下させる可能性もあるので注意が必要です。
また、以下のようにプログラムの処理をそのまま翻訳したような説明は不要です。
DIM str = "文字列" // strに「文字列」を代入
IF a = 1 THEN // もしaが1ならば
UWSCは他の言語のように複数行コメントの構文が用意されていないので、複数行書く場合も毎行ダブルスラッシュ(//)を記述する必要があります。
// コメント1行目
// コメント2行目
// コメント3行目
// コメント4行目
以下のように自作関数の説明文を複数行書くときは、開始位置と終了位置をわかりやすくスラッシュ(/)を連続して書くとまとまりとして見やすくなると思います。
//////////////////////////////////////////////////
// 【引数】
// expr : 評価する式
// truepart : 評価した式がTrueのときに返す値
// falsepart : 評価した式がFalseのときに返す値
// 【戻り値】
// truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
IFB EVAL(expr) THEN
RESULT = truepart
ELSE
RESULT = falsepart
ENDIF
FEND
複数行まとめてコメント化したいときは、本来の使い方とは違いますが定義名を省略して複数行文字列の定義で囲む方法もあります。コメント化したい行数が多くダブルスラッシュ(//)を書いていくのが手間なときは、これでも良いかもしれません。
TEXTBLOCK
コメント
コメント
コメント
ENDTEXTBLOCK
コメントアウトによるデバッグ
開発中のプログラムで一部を無効化したいときにコメントアウトします。
プログラムが思った動作をしないとき、一部をコメントアウトすることで原因の特定をするのに役立ちます。実行するたびにコメントアウトする範囲を変化させることで、どの行に原因があるのかを絞っていくことができます。
コメントアウトするときの注意点
コーティングしていくうえでコメントアウトはとても便利ですが、プログラムの実行に影響しないがためにそのまま放置になってしまうことがあります。
コメントアウトが多くなってくるとプログラムが読みづらくなります。コメントアウトは必要最低限にとどめ、不要になったものは削除することをおすすめします。
ブロック文でのコメントの書き方
ブロック文(IFB文やFOR分などの制御文)でコメントを書く場合は、以下のようなルールを参考にしてください。
- ブロック文の始めに、そのブロック分が何をするかを完結に説明するコメントを書く。IFB文の場合は条件や分岐の理由、FOR文の場合は繰り返しの目的。
- ブロック文の中に複雑な処理やわかりにくいロジックを行う文がある場合は、その文の上にコメントを書いて説明する。
例えばIFB文でコメントを書くときは、IFB文の直前に条件分岐の概要、IFB文・ELSE文の先頭に条件分岐の内容を記述します。
DIM num = INPUT("整数を入力してください")
// 入力値の奇偶判定
IFB ROUND(num) MOD 2 = 0 THEN
// 偶数ならば
PRINT "偶数です"
ELSE
// 奇数ならば
PRINT "奇数です"
ENDIF
SELECT文の場合もIFB文と同じで、SELECT文の直前に分岐理由、CASE句の先頭にそのブロック内の説明を記述します。
// ボタンの選択
SELECT MSGBOX("ボタンを選択してください。", BTN_YES OR BTN_NO OR BTN_CANCEL)
CASE BTN_YES
// 「はい」
PRINT "「はい」が押されました"
CASE BTN_NO
// 「いいえ」
PRINT "「いいえ」が押されました"
CASE BTN_CANCEL
// 「Cancel」
PRINT "「Cancel」が押されました"
SELEND
短いプログラムを例として出しているのでコメントの占める割合が多く邪魔に感じますが、長いプログラムを書いているとコメントを書いてある方が見やすくなると思います。
関連記事
- Range.ClearComments メソッド (Excel)
- 指定されたセル範囲からすべてのコメントを消去します。