差分
この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
prog:coffeescript [2015/11/10 13:48] kimu_shu 作成 |
prog:coffeescript [2015/11/15 03:16] (現在) kimu_shu [注意点:それでも->を使うべき場所] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== CoffeeScriptとは ====== | + | ====== CoffeeScript ====== |
JavaScript(ECMAScript)のシンタックスシュガーの一種。Pythonのようにインデント重視で記述する。 | JavaScript(ECMAScript)のシンタックスシュガーの一種。Pythonのようにインデント重視で記述する。 | ||
ライン 9: | ライン 9: | ||
====== ドキュメンテーションの書き方 ====== | ====== ドキュメンテーションの書き方 ====== | ||
- | <file coffeescript> | + | <code coffeescript> |
###* | ###* | ||
@class Hoge | @class Hoge | ||
ライン 19: | ライン 19: | ||
コンストラクタ | コンストラクタ | ||
### | ### | ||
- | constructor: => | + | constructor: -> |
hoge | hoge | ||
return | return | ||
- | </file> | + | |
- | みたいに書いて、coffee→jsに変換した後にjsduckを使うのがよい。 | + | ###* |
+ | @method | ||
+ | ふー | ||
+ | ### | ||
+ | foo: => | ||
+ | bar | ||
+ | return | ||
+ | </code> | ||
+ | みたいに書いて、coffee→jsに変換した後に**jsduck**を使うのがよい。 | ||
+ | |||
+ | ====== 関数定義のススメ ====== | ||
+ | thisを呼び出し時に受け取ったまま使う %%->%% と、 | ||
+ | 定義時点でのthisをバインドして呼び出し時のthisを無視する %%=>%% とがある。 | ||
+ | 多くの例ではthisのバインドを必須するときを除いて %%->%% を用いているが、 | ||
+ | **むしろthisを敢えて無視したいとき以外は %%=>%% を使うという運用のほうが望ましい。** | ||
+ | |||
+ | なぜならば、最初は %%->%% で実装していたが、後の変更でクラスメンバへのアクセスが増えてthisを | ||
+ | 扱い始めた時、%%=>%% に変えるのを忘れると、解析の難しい不具合を引き起こしやすい。 | ||
+ | デバッグに時間がかかるので、this置換の必要な所だけを %%->%% で実装する方がトータルコストは良いと判断。 | ||
+ | |||
+ | ===== 注意点:それでも->を使うべき場所 ===== | ||
+ | * クラス関数の定義用コロンの後 (hoge: %%->%%) | ||
+ | * @property("xxx", get: %%->%% @hoge) 上のコロンの後と同じ | ||
+ | * その他thisを呼び出し時にバインドしたいとき |