気ままな一言
2008年03月26日
スクリプトの書き方
スクリプトの書き方、いわゆるコーディングスタイルについて少しだけ触れてみようと思います。
公式ページにも書いてあります。
SLはプログラムをするところではないので、プログラム未経験者が殆どだと思います。
なので、LSLの文法はもとより、こういうことも知らないのではないかと思う訳です。
実に些細なことですが、意外と重要なことです。
途中でわけがわからなくなる状況を事前に防ぐことができるかもしれません。
これらはLSLに限らず、他のプログラミング言語でも概ね言えることです
まぁ少しだけでも頭の隅においてもらえればと思います。
なお、この手の話に異論はつきものです。
これが正しいというわけではありませんので参考までにと留めておいて下さい。
インデント
まずはこれです。インデントをつけるだけで読み易さは格段に変わります。
基本的には中括弧( { } )の度にタブで段落を変えるだけです。
SLビューア標準のエディタではタブはスペース4つに置き換わります。
これが意外と厄介で、修正時にタブなら1つ削除で済むところをスペースでは4つ消さないといけません。
消す個数を間違えるとせっかくのレイアウトも崩れてしまいます。
外部のエディタを使えばそういう心配はありませんし、手元にスクリプトを保存しておくことができます。
時々スクリプトの添削などを頼まれることもあるのですが、まず最初にすることがインデントを揃えるということも少なくありません。
なお、タブの設定はスペース4つ分にしておきましょう。
タブは環境依存するので嫌う人もいるのですが、スペースでの調整は手間ですし、おすすめしません。
中括弧( { } )の位置
if文などでブロック(範囲)を決めるときの括弧です。主に下記の2つの書き方があると思います。
私も最初は[B]でしたが、今は[A]のスタイルをとっています。
理由は単純で行数が増えるからです。行数が増えるということは一度にみられる量も減ってしまうからです。
また、両方のスタイルを混ぜることは、なるべくしないで下さい。
美しくないです。
ただし、[A]のスタイルでも関数の場合のみ[B]の形をとることが多いです。
私も人のソースを編集するときは基本的にそのスタイルに合わせるようにしています。
ちなみに、ifやforなどの制御構文で、処理が1行で済む場合は括弧を省略できるのですが、
そんなことはしないほうが身のためです。
また、中括弧のあとは改行すべきです。
特別な場合を除いて使わないほうが誤解を招くことも少なくなります。
変数の命名
基本的にわかりやすければ良いと思います。
変数の先頭を小文字で始めて、意味の区切りで大文字に変えるかアンダーバー( _ )で区切れば問題ありません。
定数というからには、初期化以外でこの変数の内容は変更すべきではありません。
また、変数の型や種類によってプレフィックスをつける手法もあります。
先に示したページでは
グローバル変数には先頭に g 、関数やイベントの引数には _
をつけることを推奨しています。
この範囲のプレフィックスは確かにわかり易いソースにはなるのですが、意外と使われないことが多いです。
まぁ理由は面倒臭いとかみためが美しくないとかだったりするのですが。
関数の命名
こちらもわかり易ければ何でも良いと思います。
ただし、LSLの関数はすべて ll から始まる形で構成されていますので、
ll から始まる名前だけは避けた方が無難です。
LSLのイベントについては周知の通り、小文字+_ 区切りを採用しています。
最後に
コメントはできるだけ多くつけておきましょう。
コーディングスタイルなんてものはある意味、宗教のようなものですので細かいことを気にする必要はありません。
(細かいこといい始めると、スペースの入れ方など色々とあります)
ですが、時間が経つと自分のソースも他人のソースのようなものです。
最初から他人がみてもわかり易い書き方であれば、自分のソースで無駄に悩む必要もなくなります。
要するに美しいということは素晴らしいということなのです。
公式ページにも書いてあります。
SLはプログラムをするところではないので、プログラム未経験者が殆どだと思います。
なので、LSLの文法はもとより、こういうことも知らないのではないかと思う訳です。
実に些細なことですが、意外と重要なことです。
途中でわけがわからなくなる状況を事前に防ぐことができるかもしれません。
これらはLSLに限らず、他のプログラミング言語でも概ね言えることです
まぁ少しだけでも頭の隅においてもらえればと思います。
なお、この手の話に異論はつきものです。
これが正しいというわけではありませんので参考までにと留めておいて下さい。
インデント
まずはこれです。インデントをつけるだけで読み易さは格段に変わります。
基本的には中括弧( { } )の度にタブで段落を変えるだけです。
SLビューア標準のエディタではタブはスペース4つに置き換わります。
これが意外と厄介で、修正時にタブなら1つ削除で済むところをスペースでは4つ消さないといけません。
消す個数を間違えるとせっかくのレイアウトも崩れてしまいます。
外部のエディタを使えばそういう心配はありませんし、手元にスクリプトを保存しておくことができます。
時々スクリプトの添削などを頼まれることもあるのですが、まず最初にすることがインデントを揃えるということも少なくありません。
なお、タブの設定はスペース4つ分にしておきましょう。
タブは環境依存するので嫌う人もいるのですが、スペースでの調整は手間ですし、おすすめしません。
中括弧( { } )の位置
if文などでブロック(範囲)を決めるときの括弧です。主に下記の2つの書き方があると思います。
[A] state_entry() { } [B] tate_entry() { }慣れるまでは括弧の位置が対応している[B]のスタイルで書くほうがわかり易いと思います。
私も最初は[B]でしたが、今は[A]のスタイルをとっています。
理由は単純で行数が増えるからです。行数が増えるということは一度にみられる量も減ってしまうからです。
また、両方のスタイルを混ぜることは、なるべくしないで下さい。
美しくないです。
ただし、[A]のスタイルでも関数の場合のみ[B]の形をとることが多いです。
私も人のソースを編集するときは基本的にそのスタイルに合わせるようにしています。
ちなみに、ifやforなどの制御構文で、処理が1行で済む場合は括弧を省略できるのですが、
そんなことはしないほうが身のためです。
また、中括弧のあとは改行すべきです。
○ if (i == 0) { val = 10; } △ if (i == 0) val = 10;否定はしませんが、少なくとも初心者にはおすすめできません。
特別な場合を除いて使わないほうが誤解を招くことも少なくなります。
変数の命名
基本的にわかりやすければ良いと思います。
変数の先頭を小文字で始めて、意味の区切りで大文字に変えるかアンダーバー( _ )で区切れば問題ありません。
string avatarName; string avatar_name;そして、定数値はすべて大文字で書き、意味の区切りでは _ を使用します。
定数というからには、初期化以外でこの変数の内容は変更すべきではありません。
key OWNER_KEY = llGetOwner();
また、変数の型や種類によってプレフィックスをつける手法もあります。
先に示したページでは
グローバル変数には先頭に g 、関数やイベントの引数には _
をつけることを推奨しています。
この範囲のプレフィックスは確かにわかり易いソースにはなるのですが、意外と使われないことが多いです。
まぁ理由は面倒臭いとかみためが美しくないとかだったりするのですが。
関数の命名
こちらもわかり易ければ何でも良いと思います。
ただし、LSLの関数はすべて ll から始まる形で構成されていますので、
ll から始まる名前だけは避けた方が無難です。
LSLのイベントについては周知の通り、小文字+_ 区切りを採用しています。
最後に
コメントはできるだけ多くつけておきましょう。
コーディングスタイルなんてものはある意味、宗教のようなものですので細かいことを気にする必要はありません。
(細かいこといい始めると、スペースの入れ方など色々とあります)
ですが、時間が経つと自分のソースも他人のソースのようなものです。
最初から他人がみてもわかり易い書き方であれば、自分のソースで無駄に悩む必要もなくなります。
要するに美しいということは素晴らしいということなのです。
何かあれば、ご連絡下さい。
Posted by れむ at 19:23
│Tips
コメントありがとう♪
美しく見えるように
書けということだけは
わかりました^^
これからもいろいろ
教えてください
レミ先生w
書けということだけは
わかりました^^
これからもいろいろ
教えてください
レミ先生w
Posted by そうだら at 2008年03月26日 21:25
はい、美しさが重要です!
Posted by れむ
at 2008年03月28日 00:57
