コーディング規約(2)――ラベル
 ちょっと時間を置いて第二回目。今回はラベルの書き方について、です。
 一口にラベルと言っても、実は種類があるわけで。
 まず思いつくのは「ラベルを使用する命令による分類」でしょうか。これで分類してみましょう。
 ラベルを使用する命令は以下の通りです。

・csel
・defsub
・gosub
・goto
・loadgosub
・lr_trap,lr_trap2
・pretextgosub
・r_trap
・return
・rgosub
・select
・selgosub
・tablegoto
・textgosub
・trap,trap2

 NScripter API Reference (Unofficially)からアルファベット順に抜き出してみました。
 returnも入っているのは、戻る先にラベルを指定できるからです(return *startみたいに)。
 で、各命令ごとに異なるラベル名を考えてもいいのですが、それはあまりにも無駄が多すぎるので、もうちょい絞りましょう。
 これらの命令は、大きく分けて二つに分類できます。一つはgotoのように、指定されたラベルに飛ぶだけの一方通行の命令と、もう一つはgosubのような、指定されたラベルに飛んだ後、returnで呼び出された行に戻る往復型の命令です。ラベルとreturnとの対応を確認するためにも、往復型のラベルにはなにか目印をつけておくといいかもしれませんね(プレフィクスとしてrをつけておくとか)。また、往復型のラベルでも、自作命令(defsub)のラベルとサブルーチン(gosub)のラベルは分けておいたほうが解りやすいかもしれません。他にはシナリオ用のラベルとシステム用のラベルをわけるとか。
 ちなみに自分は、現時点では特に書き分けていません。ライブラリ化・モジュール化を進めたら、基本的にgoto/gosubで飛ぶのは1つのファイル内のみなので(さすがにシナリオはファイルを跨ぎますが)、そこまで困ることがないんですよね。
 前にも紹介した、「間違ったコードは間違って見えるようにする」っていう記事の考え方に基づくなら、goto系の命令とgosub系の命令を間違えないように区分すべきだなと考えているので、そのうちプレフィクスをつけるかもしれません。
[PR]
by lyricist_m | 2007-07-19 20:31 | NScripter
<< 自分のHPに飛ばすには――shell コーディング規約(1)――定数と変数 >>