今月初めから、「大勢の人数で7年もかけて作ったシステムをたった一人で3ヶ月で移植」且つ「殆ど新規に作りなおす必要有り」という無謀な仕事をしている(いつものパターンと言えばそれまでだが)。

したがって雑記なぞ書いているバヤイでは無いのだが気になったので書く。

つまり、こんなアホコード書くなと。


自分は滅多にそーゆー事は無いのだが、プログラマ達の間では「2ヶ月前の自分は他人」、すなわち、「2ヶ月前に書いたコードなんて、どーゆー意図で書いたか理解できん」と言う話題があがる事が多々ある。自分は何年前のコードでも昨日メンテしていたかのようにメンテできる(仕事で書いたコードに限る)んで、先のような話はイマイチ理解できなかったのだが、今回の仕事で理解できた。

以下のC言語のプログラムコードを見て欲しい。

int  i, j;
int  x, y;
char s[9];
char sx[7];
char sy[7];


s[0] = 'P';
s[1] = 'S';
s[2] = 'E';
s[3] = 'T';
s[4] = '(';
s[5] = ',';
s[6] = ')';
s[7] = ';';
s[8] = '\0';

x = 640;
y = 480;

sprintf( sx, "%d", x );
sprintf( sy, "%d", y );

i = 0;
do {
    switch ( i ) {
    case 5:
        j = 0;
        do {
          putchar( sx[j] );
          j++;
        } while ( sx[j] != 0 );
        break;
    case 6:
        j = 0;
        do {
          putchar( sy[j] );
          j++;
        } while ( sy[j] != 0 );
        break;
    }
    putchar( s[i] );
    i++;
} while ( s[i] != 0 );

ぱっと見て何をするコードか理解できるだろうか?そりゃ、7秒ほど眺めれば理解できるが、素直に以下のように書けんのか?

x = 640;
y = 480;

printf( "PSET(%d,%d);", x, y );