JavaScriptと単体テスト

今回はじめて、本格的なJavaScriptプロジェクト。

最近つくったのは、

JSON情報から、HTMLのテーブルを表示。テーブルのセルを編集。(逆にHTMLテーブル要素からJSON情報をつくる)

要は、HTML<->JSONの変換がポイントになるんだけど、そこがポイントだと理解するのに、少々回り道した。(はじめは、MVCのイメージ。M-JavaScriptモデル、V-HTML, C-イベント操作ごとにMを更新し、HTMLテーブル要素を再構築、JSON情報は、model.toJSONのつもりでつくっていたが、VとMで重複して情報を保持するところ、HTML要素を組み立て直すサイクルが短い点がいまいちで、このアプローチは捨てた。)

HTML<->JSONの変換と理解してからは、楽。JavaScriptでも、単体テストのありがたみを感じられる箇所。今回はQUnitを使用。expectとactualの順番に癖があるが、[ok]など、記述が簡潔なところは好き。

問題領域を切り分け、ブラウザ更新のみで、期待通り振る舞ったか否かの判断できるように、プログラムとプログラミングをデザイン。数行のメソッドに分割しても、JavaScriptに疎くて、途中の振る舞いが読めなくなったら、console.debugを差し込み、Firebugで出力確認。コアな部分ができると、画面から手動確認。

プログラミングに集中できる足場をつくれると、心地がよい。