2007年のJohn Resig先生の講演を動画で見てグダグダメモったのでポスト。
以下のテキストはTakazudoフィルタがかかっている可能性があるのでご注意を。
- jQueryはすげー短く書けることにフォーカスしてる
- jQueryはプラグイン設計だ。
- コアな部分は取り込み、
オプショナルな機能はプラグインとして使えるようになっとる - jQueryは「何かを探してきて」「そいつになんかする」
- 少なくてしっかりしたAPIを作るのが重要
- たくさんメソッドがある、複雑なメソッドがあるそりゃ最悪
- コードなんてあっという間にめちゃくちゃになる
- 全オブジェクトが同じメソッド持ってるこれって超簡単
- 短いコードはメンテナンス性に優れてるよ
- 共通の、根っこの部分まで簡潔にする
.eq(0), .gt(3), lt(2) は slice(0,1) .slice(1,4) より簡単 - ネーミングが想像できるようにする
.click か .onclick か? .onclick’ だったらonClickにするか悩むっしょ - 共通のルールにのっとってAPIを設計してるよ
.method(options, arg1, arg2,.... callback);
optionsはkey valのobject、最後がコールバック。
.method(function(){
// here, this is always DOMElment
})
大体中身ではthisがDOMElementになるようにしてる
- JSだとなんでも参照だからOOしやすい。
- Functional Programming
(function(){
// do somehting
reutrn something;
})();
//とかカプセル化マジ便利
(function(){
var test = false;
this.method(function(){
return test;
});
}).call(this);
//とかそんな感じででthis変えられる。
- ローカルスコープでインスタンスにアクセスだ
- カプセル化やばい。漏れない。
- Namespacingしてよい市民 (good citizen) にすんだ
- Object.prototypeを拡張するのはまじであほ
- 例えばgetElementsByClassNameとかをObject.prototypeとかに生やすのはやめろ
- ネイティブコード上書きするよ
- array.forEach, .map, filterとかなんとかも。
- ユーザーのエラーを許容する作り
.css(Number) →.css(Number + ‘px’) - コンストラクタいじってみるべ
function jQuery(str, con){
if(window == this)
return new jQuery(str,con)
}
new jQuery('#foo')
jQuery('#foo')
- try{…}catch(e){} はだめ。どこでエラー起こったかとか後で見てわからなくなる。
- 拡張性を考慮
- Extensibility
Method:
jQuery.fn.method = fn;
$(...).method();
Selectors:
jQuery.expr[':'].foo = "...";
$(':foo')
- OOなコードは一つの答えだ(と同時に一つの答えでしか無い)
- Constructor → new → object
- JavaScript2にはClassがある。まじでcool。
- オブジェクト同士がメッセージを受け渡し合うのは複雑になるのでカスタムイベントはいいよ。
- Dojoはカスタムイベント使ってる。まじでcool。
- 構造化されたドキュメント書くのは重要
- scirptDoc
- JSDoc
- とりあえずwikiつけるのおすすめ。
- ドキュメントのコアをXMLとかで公開しておけば、誰でもドキュメントを見るための仕組みを作れる
- 完全に全部の引数とかにドキュメントを付けるのなんて無理。コールバック関数とかもらう場合とか、そう単純に示せないことも多い。
- User-centric API
Plugin authoring
Docs on writing docs
Advanced plugin authoring
って優先度で作ってる - テストが無いコードは信頼できない

うわーすごい。
とても勉強になります。
コメント by sasaki — 2010年5月6日 #