ここ2、3日、少しずつ時間をとってコンスタントにコードを書いてみて感じたこと。
わたしは割とボトムアップでコードを書く癖があります。今回のコードでしたら、まず自機を表示して、次に動かせるようにして、次に弾を撃てるようにして、次にエイリアンを表示して…と言った具合。
その一方で、それぞれを実現しようとすると突如トップダウンになります。自機を動かすとき、最初に書いたコードの部分が、キー入力の部分。
switch(key) { case GLUT_KEY_LEFT: myShip.left(); break; case GLUT_KEY_UP: myShip.up(); break; case GLUT_KEY_RIGHT: myShip.right(); break; case GLUT_KEY_DOWN: myShip.down(); break; default: break; }
上下左右に動かせることを前提として書いてしまってから、実際に動かすためのコードを書きます。
void left() { erase(); move(Point(-Delta, 0)); draw(); } void right() { erase(); move(Point(+Delta, 0)); draw(); } void up() { erase(); move(Point(0, -Delta)); draw(); } void down() { erase(); move(Point(0, +Delta)); draw(); }
で、上下左右に動かすためのこのコードを書いてから、erase
/move
/draw
を書きます。
大枠はボトムアップなんですが、いったん何を書くか決まったら、最初に目的を実現するコードを書いてしまい、そこからブレイクダウン。
趣味で書いているから許される書き方ではあるんですが。でも、仕事で開発をするときでも、頭の中ではこうやってアップダウン、アップダウンしながら、概要と詳細を往復しながら、プログラムは現実されていくものではないかと。