動的型付け言語は実行時にエラーが出るから嫌だよね、と良く言うけれども、実際にどんなエラーがどのくらい出ているのかを遊びがてら試してみた。
作ったものと条件(ざっくり)
これを一度も実行せずに最後まで書き切った後、そこそこ想定したとおりに動くようになるまでに、修正を何回入れれば良いかを試してみた。
結果(エラーの起きた順)
Uncaught SyntaxError: Unexpected token )
どこかからコピったら、関数の終わりに閉じ括弧が付いていた。
Uncaught SyntaxError: Unexpected token ;
どこかからコピったら、オブジェクトのプロパティ(関数)の終わりにセミコロンが付いていた。
Uncaught TypeError: object is not a function
newを余分に付けた結果、コンストラクタだと思っていたものがインスタンスだった。
Uncaught TypeError: Cannot read property 'width' of undefined
initializeの時点ではインスタンスにoptionsが設定されていないというBackbone.jsの仕様理解不足。
Uncaught TypeError: Cannot read property 'sequencer' of undefined
コンストラクタに変数を渡すのを忘れていた。
Uncaught TypeError: Cannot call method 'add' of undefined
Backbone.Modelのプロパティを取得するのにgetを呼ぶ必要があるのを忘れていた。
Uncaught TypeError: Cannot read property 'width' of undefined
initializeの時点ではインスタンスにoptionsが設定されていないというBackbone.jsの仕様理解不足。
Uncaught TypeError: Cannot read property 'time' of undefined
Backbone.Modelのプロパティを取得するのにgetを呼ぶ必要があるのを忘れていた。
Uncaught TypeError: Cannot set property 'undefined' of undefined
Backbone.jsの仕様理解不足。クライアントサイドで自動付与されるIDはidではなくcid。
Uncaught TypeError: Cannot set property 'c6' of undefined
インスタンスのプロパティ(ハッシュ)の初期化忘れ。
(何も表示されず)
Backbone.Modelのプロパティを取得するのにgetを呼ぶ必要があるのを忘れていた。
(何も表示されず)
Modelのコンストラクタに渡す変数の型が間違っていた。
(図形が大きすぎる)
数値が間違っていた。
(図形が2つある)
メソッドを誤って別の場所で2度呼んでいた。
(図形の表示位置がおかしい)
すぐに解決できなかったのでここで終了。
統計
おおよそ次のような結果になった。
エラー回数(全15回)
- シンタックスエラー: 2回
- 型エラー: 8回
- ぬるぽ相当: 2回
- ロジックのミス: 3回
時間配分
- 書いていた時間: 約2時間30分
- 直していた時間: 約30分
直していた時間のうち半分が型エラーだとすると、新規開発で既に10%くらい型エラーでロスしている計算になる。
そしてもちろん、これが大規模&チーム開発になると物凄い勢いでロスが生じるのであろうと想像する。
まとめ
所詮遊びなので、条件が適当だとか分かりきったことを言っていじめないで欲しい。