わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

グローバルな変数・関数をなくす

zjsに手を加えました.ファイルはhttp://github.com/takehiko/zjsより取得可能です.http://wakkzen.homelinux.net/zjs/http://www.wakayama-u.ac.jp/~takehiko/zjs/も,最新版にしました.

今回の修正では,名前空間を導入して,これまでグローバル変数・グローバル関数として定義していたのを押し込めました.それにより,グローバルな名前はzjsのみになっています.
zjs一つの中になんでもかんでも押し込めるのはよくないので,以下のようにグループ分けをしています.

  • zjs.config:設定情報
  • zjs.clock:時間管理
  • zjs.key:キーイベント
  • zjs.board:パネル
  • zjs.bell:ベル
  • zjs.screen:時間その他の表示

さらに階層を加えているところもあります.これまでの

var timeColorLabelArrayArray = new Array(timeColorLabelArray1, timeColorLabelArray2, timeColorLabelArray1);
timeColorLabelArray = timeColorLabelArrayArray[timeColorLabelArrayIndex];

var prop = zjs.screen;
prop.color.base = new Array(zjs.config.colorArray1, zjs.config.colorArray2, zjs.config.colorArray1);
prop.color.array = prop.color.base[prop.color.index];

に変わっています.
しかし,現状のコードは,すっきりしているとは思えません.匿名関数が不自然に見えること.例えばzjs.config.initとしたい関数の中で,zjs.config内のプロパティにアクセスするのにzjs.config.が不可欠なこと.zjs.config.ringModeなどをdeleteしていること,などなど….より良い記述方法を,探ることにします.
小さな進展もあります.

  • 停止時に砂時計モードを変更していると,「分」の表示が消えることがあるのを,修正しました.言い換えると,停止時には必ず「分」の文字が表示されるようにしました.
  • Lunascapeの最新版を用いて,Trident/Gecko/Webkitのいずれでも動作することを確認しました.