My AppleScript Coding Style

Contents

Introduction

現在(2007.06.04)自分で決めて自分で使っている AppleScript のコーディングスタイルをまとめます。

もっぱら、変数の命名規則についてです。自分が公開しているコードは、今現在、全部これに準拠している訳ではないけど、新しく書くコードはこのスタイルに合わせていこうと思っています。

経験上/実用上問題ない範囲で最小な規則を定義したいと思っています。いっぱい決めても守るのがめんどくさいですから。

ローカル変数, ハンドラ名

全部小文字。単語を"_" で区切る。

できるだけ、AppleScript の識別子として大文字と小文字を混ぜない方がいいと思っています。理由は二つ。

世の中の AppleScript を眺めてみると CamelCase が用いられることも少なくないようです。自分も、昔は何も考えずに CamelCase をばんばん使っていました。単語の区切りでアンダースコアを入力するより、シフトキーを押した方が楽ですからね。でも、AppleScript の予約語もスクリプティング機能追加のコマンドも全部小文字です。できるだけ小文字にそろえた方が、見た目が美しい気がします。また、アンダースコアの分だけ名前が長くなりますので、できるだけシンプルな名前を考えるようになりました。

スクリプトオブジェクトの定義

大文字で始まる CamelCase で定義する。つまり大文字で始まり単語の最初だけを大文字にする。

もっぱらスクリプトオブジェクトは name space や class として使われます。Perl とか Ruby では、これらは CamelCase が用いられるようなので、それらに合わせます。

ハンドラ内で定義されるスクリプトオブジェクトはちょっと意味が違うけど(クロージャとか)、考えるのがめんどくさいからスクリプトオブジェクトは全部 CamelCase。

property/global 変数

name space, class としてのスクリプトオブジェクトを格納している。

大文字で始まる CamelCase で定義する。トップレベルで定義されているスクリプトオブジェクトと同じと見なす。

ローカル変数/ハンドラと区別する為に積極的に大文字を混ぜる。

e.g.) ScriptObject

変数/定数として property/global 変数

ローカル変数と区別する為に、アンダースコアで始める。

アンダースコアで始め、すべて小文字で、単語の区切りはアンダースコア。

e.g.) _globl_variable

アクセッサメソッド

スクリプトオブジェクトのプロパティに外部からアクセするときはアクセッサメソッド必ず用いる。

オブジェクト指向のプログラミングとしては、よく言われることだけど、最近ようやく経験的に重要だと悟った。オブジェクトの外部へのインターフェースを全部関数にしてしまうと、互換性を保ったまま大胆に内部を改造できる。

値を設定するメソッドは、"set_" で始めるようにする。値を取得するメソッドには"get_" をつけない。これは、Cocoa の影響。できるだけメソッドを短く保ちたい。

真偽値を返すメソッドは"is_"で始める。これも Cocoa の影響。Cocoa ではアンダースコアは使わないけど。