スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

My AppleScript Coding Style

栗田さんのところでMy AppleScript Coding Styleという記事を見つけたのでまねをして書いてみた。

Introduction
現在(2009.3.20)自分で決めて自分で使っている AppleScript のコーディングスタイルをまとめます。
もっぱら、変数の命名規則についてです。自分が公開しているコードは、今現在、全部これに準拠している訳ではないけど、新しく書くコードはこのスタイルに合わせていこうと思っています。
経験上/実用上問題ない範囲で最小な規則を定義したいと思っています。いっぱい決めても守るのがめんどくさいですから。
どうせソースなんて自分しか見ないし。

ローカル変数, ハンドラ名
最近はいわゆる lowerCamelCase が多いです。栗田さんは他の環境との互換性を気にされていますが,私は AppleScript オンリーなのでこれで問題なし。
ハンドラ名の場合,最初の部分は動詞の英単語にしています。
変数の場合,与えられた変数は a から始まり,内部で生成した変数,特に出力先などは the から始まります。あと,ローカル変数が一つしかない時は msg を使います。

set thePath to POSIX path of aFile

スクリプトオブジェクトの定義
基本的にスクリプト内部でスクリプトオブジェクトを定義していませんので,使いません。
意外に思われる方もいるかもしれませんが,すべて外部オブジェクトをロードする形式にしてしまったので,内部で定義することはないのです。
AppleScript Language Guide ? なにそれ食えるの?

on startSmallProgress(msg)
  notify(msg) of loadObj("Growl Support Plug-in")
end startSmallProgress

property/global 変数
property 変数は(local)変数に同じです。なぜなら,同じスクリプトでもバージョンアップで property にしたり local にしたりするので。初めは property で書き始めて,余裕があったら初期設定ファイルを用いて変数はすべて local にしてしまいます。
global 変数は危険きわまりないので使いません。

アクセッサメソッド
スクリプトオブジェクトのプロパティに外部からアクセするときはアクセッサメソッド必ず用いる。
栗田さんもこう書かれていますが,これは非常に大事です。これをやっておくと,すべての処理を抽象化したレイヤーで行なえるようになるため,システム環境に依存しないスクリプトが書けます。
値を設定するメソッドは set で書き始め,アンダースコアは使いません。値をかえすメソッドは return で書き始めます。だって,外部のブジェクトから見ると get でも,そのオブジェクトから見ると return だから。get は HyperCard臭がして古くさいし。真偽値を返すメソッドは check で書き始めます。

tell application "MPEG Exporter TNG" to checkLeopard()

本当はいろいろな applet で連携とかできると面白いのだけれど,そもそも AppleScript 自体がマイナーな存在だし,書いている人は少ない。常に廃止されやしないかと自分でもおびえているから他の人に AppleScript を勧めることもしていない。しかし, MPEG Exporter TNG のように, shell script から UNIX の広大な海にアクセスできるのでまだまだ将来性はあるし,ここまで AppleScript が生き残っているのは技術としての筋が想像以上にいいからではないだろうか。
テーマ: Mac | ジャンル: コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。