変数の命名方法

まずは基本的な規則

 Macintoshのプログラムでは、Smalltalkの慣習を引き継ぎ、最初は小文字で始め単語の区切りは大文字にするaaaBbbb式の命名が一般的なので、これに従うのが、他の人のプログラムと違和感ないのでいいと思います。
 単語の区切りをスペースの代わりに_で置き換えるという方法も比較的一般的です。
 どちらにしろ、変数名を一単語にするのは、いつ予約語と衝突するか分からないので、非常に危険です。
 変数名の規則は、結局人それぞれなので、この記事は参考程度にして、自分なりの工夫をして、しっくり来る名前を使うようにするのがいいでしょう。と言っても、テストプログラムでも無い限り、「a」とか「b」なんかのテキトーな名前を付けてはいけません。
 ローマ字による命名は「「し」を「shi」と書いたか「si」と書いたか、「か」を「ca」としたか「ka」だったかを忘れてしまう」とか、「英語だとばっかり思って読んだら読めず、悩んでいたら、実はローマ字だった」という事もあって、意外にデンジャラスです。
 人によっては全く気にならないようなので、ローマ字を使うかどうかは好きずきでしょうが、個人的にはローマ字を使う位なら縦棒で括って、「|変数|」という風に日本語で書いた方がいいと思います。

the+クラス名

 とにかく、いいから変数に入っている値のクラスの頭にtheを付ける。これだけ。
 変数の数が多く無い場合は、たいていこれで方がついてしまうし、なんといっても分かりやすい。

set theList to {"リ","ス","ト"}
set theBoolean to true
set theNumber to 10
set theRecord to {name:"レコード", id:-1}
set theDate to current date

the+オブジェクト名

 参照が入っている場合は、その参照が示しているオブジェクト名にtheを付けるという手が有効。

tell application "Finder"
	set theFile to (file 1 of disk 1) as alias
	set theWindow to ref (front window)
	set theFolder to ref (folder 1 of last disk)
end tell
tell application "QuoEdit" to set theDocument to ref (front document)

the+色々

 そのほか、困ったら名詞にtheを付けておく。英語が得意でない場合は文法的にどうとかは考えない方が精神衛生上いいでしょう。
 英語が自在に使える人は、そもそも悩むことはないので問題ないと思います。

thePath
theHit

 theの代わりにaを使う手もあります。aを頭につける場合、仮引数に使うと引数(argument)のaということで、分かりやすいと思います。

カウンタ

 カウンタには、習慣的に「i」が使われ、ループ構造がネストした場合はさらに「j」「k」を使うことが多いようです。
 これを採用しているプログラムは非常に多く、とにかく他人のプログラムを読むと大抵これです、無理にtheCounter等にする事も無いでしょう。
 正確にはどのような経緯で使われるようになったかは分かりませんが、増加する値(incrimental value)だか、索引(index)の頭のiを取ったのでしょう。
 FORTRAN(フォートラン)が採用したI〜Nを整数(integer)とするという仕様が、他の言語でも定着したというのが、信憑性のある説です。そもそも、FORTRANがI〜Nを整数としたのはintegerの頭2文字からの連想では無いかと思いますが。
 他のjとかkは、アルファベットの並びでi,j,kと続くから使っているという以外の理由はないと思います。

repeat with i from 1 to 5
	display dialog i
end repeat

 リストから項目を取り出しながら繰り返すタイプのループでは、カウンタに現在の項目(current item)を略して「curItem」を使うことが多いようです。
 リストの内容に応じて「curNum」とか「curFile」などとして使うのも分かりやすいでしょう。

set theList to {1,2,3,4,5}

repeat with curItem in theList
	display dialog curItem
end repeat

フラグ

 フラグとなる真偽値の入った変数は、「isXxx」とつけるパターンが多くあります。
 「〜か?」といったニュアンスで、疑問風にしてるわけです。
 丁寧に「isItXxx」とする場合もあります。

isOpen
isReady
isItFull

 同様に「canXxx」とつけるパターンも多くあります。
 「〜できるか?」といったニュアンスで、先ほどの命名方法の変型です。
 通常はXxxには動詞が入ることになります。

canChange
canReveal
canMove

 どちらでも言えることですが、「isNotXxx」とか「cantXxx」のように否定を名前にはしない方が無難です。
 スクリプトを書く場合にtrueを返せばいいのか、falseを返せばいいのか、こんがらがってしまいます。
 名前には肯定的な意味を持たせて、そうであるならばtrue、違っているのならfalseとしておいて、判定に使うところでnot演算子をつける方が、何かと分かりやすくなります(英語的には、少々変ですが)

not isOpen

クラスの省略形+意味

 大抵はクラス名の頭3か4文字を省略形として使い、その後に意味となる文字を置き、「cccMmm」とします。
 マイクロソフトが推奨している(ハンガリアン)表記法に近いものですが、意外に役に立ちません(ははは)。というのも、ほとんどはtheを頭につける事で事足りるからです。

intHit
numHiscore
dateTomorrow
strError

文そのまま

 何も考えずに、代入の元になった文を書いてしまうという、ミモフタもない方法も意外に有効で、適度に長い名前になるのが利点です。

tell application "Finder"
	set nameOfFrontWindow to name of front window
end tell

大域変数の名前

 大域変数が属性や局所変数と名前がぶつかる事は、とにかくバグの元で避けねばなりません。
 そこで、大域にはglobalの頭を取ってg_を付けるのも有効です。
 全部大文字にしてしまうとか、しっぽに_を付けるという手もあります。
 どちらかというと、ちょっと格好わるいと思うような規則にした方が、大域変数の多用を押さえる副作用もあっていいでしょう。
 個人的には、大域変数の有効範囲をキチンと意識するのが面倒なので、大域変数自体を使ってません。詳しくは「大域変数の有効範囲」を参照して下さい。

global g_counter

参考

 Objective-Cの変数名の最初に_を使うのはAppleが予約しているそうですから、AppleScriptでも避けた方が無難かもしれません。Objective-Cを使う場合にクセで使っちゃいそうです。


2000-08-06 2001-01-13 2001-04-22 2001-05-07 2001-09-01 2005-04-25