zudologトップ > Best Practices in Javascript Library Design 2007/8/18 by John Resig のメモ

Best Practices in Javascript Library Design 2007/8/18 by John Resig のメモ

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
    って優先度で作ってる
  • テストが無いコードは信頼できない

1件のコメント »

このコメント欄の RSS フィード
TrackBack URI: http://zudolab.net/blog/wp-trackback.php?p=267


  1. うわーすごい。
    とても勉強になります。

コメントをどうぞ

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree

Powered by WordPress. Entries and comments feeds. © 2009 Takeshi Takatsudo [takazudo@gmail.com] All Rights Reserved.