if文のだらしない分岐を出来るだけ減らす
var キャラクター = { ジャンプする : function() { this.y = 10 }, しゃがむ : function() { this.animate('しゃがみ'); }, もぐる : function() { this.animate('もぐる'); }, 右に動く : function() { this.x += 5; }, 左に動く : function() { this.x -= 5; } };
に対して
var 押されたキーの方向によって行動を変える = function(dir) { if(dir === 'up') { キャラクター.ジャンプする(); } else if(dir === 'down') { キャラクター.しゃがむ(); } else if(dir === 'right') { キャラクター.右に動く(); } else if(dir === 'left') { キャラクター.左に動く(); } };
というのはだらしない。
var move_to = { up : 'ジャンプする', down : 'しゃがむ', right : '右に動く', left : '左に動く' }; var 押されたキーの方向によって行動を変える = function(dir) { if(dir in move_to) キャラクター[move_to[dir]](); };
これならまだ許されるのでは。
このコードは引数が渡せない等の不便があるが、工夫次第でどうにでもなることは言うまでもない。
https://github.com/myatsumoto/fusuma/
この方式はこのライブラリに活用した。