軽快な拡張機能を作るためのベストプラクティス

7 views
Skip to first unread message

dynamis

unread,
Apr 13, 2010, 9:25:50 PM4/13/10
to modest group
dynamis です

皆さん modest の Google Group にご参加いただきありがとうございます。modest サイ
トと共に、みんな気軽に質問や議論していく場所にできればいいなと思います。(・・).

最近少し拡張機能のコードを書いたり見たりして、拡張機能によってコーディングスタイ
ルがいろいろだけど、どうするのが書きやすいかなぁとか色々思う今日この頃なのです
が、パフォーマンスについては US の方で MDC にドキュメントを掲載する準備として
Wiki にベストプラクティスをまとめたページが作られつつあります。

https://wiki.mozilla.org/Performance/Addons/BestPractices

ここおかしいんじゃないかとか、こんなのもあるよとかあればシェアして、US にも
フィードバックできればいいなと思うのですが、皆さん如何でしょう?
# もちろん個別に直接フィードバックしてもらっても OK

--
- dynamis (Technical Marketing)

Mozilla Japan : http://mozilla.jp/
Firefox Support : http://support.mozilla.com/ja/
Mozilla Developer Street: https://dev.mozilla.jp/

Gomita

unread,
Apr 14, 2010, 5:27:38 AM4/14/10
to Mozilla Developer Street (modest)
興味深い記事ですね。
「Memoization」の手法はFirefox本体のコードでもしばしば見かけるのですが、
今まで自分の拡張機能では以下のようなやり方をしていました。

o = {
get _observerSvc() {
if (!this.__observerSvc) {
this.__observerSvc = Cc["@mozilla.org/observer-service;1"].
getService(Ci.nsIObserverService);
}
return this.__observerSvc;
},
__observerSvc: null
};

このやり方だと__observerSvcというプロパティが1個増えて
ほんの僅かですが効率悪いので「Memoization」の書き方に修正しようと思います。

あと、Firefox 3.7以降であれば、XPCOMUtilsというJSモジュールを使って
以下のように書くこともできるみたいです。

XPCOMUtils.defineLazyServiceGetter(o, "_observerSvc", "@mozilla.org/
observer-service;1", "nsIObserverService");

satyr

unread,
Apr 14, 2010, 1:26:42 PM4/14/10
to Mozilla Developer Street (modest)
> あと、Firefox 3.7以降であれば、XPCOMUtilsというJSモジュールを使って

.replace(3.7, 3)

https://developer.mozilla.org/en/XPCOMUtils.jsm

3.7 からはこっちですね。

https://developer.mozilla.org/en/JavaScript_code_modules/Services.jsm

Reply all
Reply to author
Forward
0 new messages