グローバル変数は邪悪だ
このところ技術系話は独り言みたいなのが多かったのでMixi日記だけで書いていたのですが,今日はちょっと一般性があるのでブログの方で。最近,Yahoo! UI Libraryを使い始めたのですが,何をやるにもまず「YAHOO」の5文字で始まるのがちょっとうざったく感じていました。ところが,Yahoo! UIのブログを読んでその気持ちが氷解。
要は,JavaScriptでいろいろなプログラムが同じページ上で動くようになると,グローバル変数の衝突の恐れが増えるわけで,グローバル変数は少なければ少ないほどいいというのです。そこでYahoo!は,YAHOOという一つの変数だけを用意したとのこと。
なるほど。
実はGoogle Mapsのプラグインはグローバルたくさん使ってます。ここも直さないとなあ。PHPの方ではmbstringエミュレータは最初グローバルをたくさん使っていましたが,今は大分減らしました。本当はクラス化してもっときれいな作りにしたいのですが,作業の優先順位が高くないので,なかなか取り掛かれません。
それと,Nucleusの新しいカテゴリー/タグ入力のところをprototype.jsとsuggest.jsを使って書いていたのですが,機能的にはYahoo! UI Libraryだけでもできそうな感じがしてきています。一回動いたものを修正するのもちょっと怖いですが,管理画面の方がちゃんと動いたら書き換えるかも。管理画面はまだツリー表示がAjaxで出せて喜んでいるという段階なので先は遠い。
"Global variables are evil."
Global Domination Yahoo! User Interface Blog
要は,JavaScriptでいろいろなプログラムが同じページ上で動くようになると,グローバル変数の衝突の恐れが増えるわけで,グローバル変数は少なければ少ないほどいいというのです。そこでYahoo!は,YAHOOという一つの変数だけを用意したとのこと。
なるほど。
実はGoogle Mapsのプラグインはグローバルたくさん使ってます。ここも直さないとなあ。PHPの方ではmbstringエミュレータは最初グローバルをたくさん使っていましたが,今は大分減らしました。本当はクラス化してもっときれいな作りにしたいのですが,作業の優先順位が高くないので,なかなか取り掛かれません。
それと,Nucleusの新しいカテゴリー/タグ入力のところをprototype.jsとsuggest.jsを使って書いていたのですが,機能的にはYahoo! UI Libraryだけでもできそうな感じがしてきています。一回動いたものを修正するのもちょっと怖いですが,管理画面の方がちゃんと動いたら書き換えるかも。管理画面はまだツリー表示がAjaxで出せて喜んでいるという段階なので先は遠い。