JavaScriptの名前空間のスマートな使い方

JavaScriptで名前空間(ネームスペース)を用意すると、使う側が面倒になってしまうケースがあります。 ■例 もし jp.clockmaker.data.MojaData クラスを作った場合、 いつも new jp.clockmaker.data.MojaData() って書くことになる? 続きを読む
16
池田 泰延 @clockmaker

WebGLで一躍有名になったJavaScriptライブラリのThree.jsですが、大文字の名前空間に違和感が…。クラス呼び出すときに、 new THREE.Object3D() って見栄えはもちろんのこと、タイピングも面倒だし、書き忘れが多発しそうです。#javascript

2012-02-12 00:00:52
池田 泰延 @clockmaker

JSで、もし jp.clockmaker.data.MojaData クラスを作った場合、いつも new jp.clockmaker.data.MojaData() って書くのでしょうか?場合によってはローカル変数に名前空間を入れればすみますが。。 #javascript

2012-02-12 00:08:13
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

@clockmaker (ε・◇・)з ボクだとグローバル空間にexport する関数を用意しておいて、必要な人にはそれを叩いてもらうって事やりますね。 サンプルコードが短く分かりやすくなりますね。 with() と一緒の発想です

2012-02-12 00:10:14
池田 泰延 @clockmaker

@uupaa なるほどです! ユーザーが名前空間のON/OFFを選択できるのはいいアイデアですね。サンプルコードで都度名前空間を書いていたらライブラリの敷居が高いように思われそうですし、逆に仕事等でしっかり作るときには名前空間を使いたいときもあるでしょうし。

2012-02-12 00:17:29
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

@clockmaker (ε・◇・)з ですです。サンプルコード上で「うわーなんか凄いのにシンプルー」感をかもし出すためにも、グローバル空間に押し出すといいです

2012-02-12 00:19:58
池田 泰延 @clockmaker

@uupaa そういう印象は大事ですよねw かっちりタイプとさっくりタイプのバランスを調整できるのは新しい発見でした!

2012-02-12 00:23:46
池田 泰延 @clockmaker

ちなみに宇都宮さんのブログで、名前空間をスマートに処理する工夫が紹介されています。AS3のやり方から名前空間を使わないと落ち着かない感がにじみ出ているような気がしましたw http://t.co/R1S8bKSk #javascript

2012-02-12 00:34:47
池田 泰延 @clockmaker

名前空間をなしにしてグローバルに使いたいなら、BitmapではなくCMBitmap(ClockMakerのBitmapクラス)というようにPrefixを作る方法もあると思いますが、それは好きではなかったり。#javascript

2012-02-12 00:43:40
池田 泰延 @clockmaker

例えばBox2D( http://t.co/KUntnDjY )みたいに何でもかんでも「b2***.as」とするのはどうも好きになれないです…w #javascript

2012-02-12 00:44:50
Tanabe @tanabe

@clockmaker 参考までに私は Namespace.js というものを使用しています。 https://t.co/T8QljvF0 ActionScript を書いている人には馴染みやすい部類だと思います。

2012-02-12 00:57:22
池田 泰延 @clockmaker

@tanabe レスありがとうございます。これはASのimportと近くて馴染みやすそうですね!試してみたいと思います。

2012-02-12 01:03:43
tomoaki takanawa @nutsu

@clockmaker 名前の始まりをそろえるのはダーティな感じですが、interface を I ではじめたりクラスが何であるのかわかりやすい、あるいはIDEの補完で引きやすいのでどうしてもそっちに流れてしまいます。。

2012-02-12 00:58:22