エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

概要と詳細

ここ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を書きます。

大枠はボトムアップなんですが、いったん何を書くか決まったら、最初に目的を実現するコードを書いてしまい、そこからブレイクダウン。

趣味で書いているから許される書き方ではあるんですが。でも、仕事で開発をするときでも、頭の中ではこうやってアップダウン、アップダウンしながら、概要と詳細を往復しながら、プログラムは現実されていくものではないかと。