ラピュタは本当に存在したんだ!!

先日私のところに 「既存のアプリの機能拡張して欲しい」という依頼がやってきました。 まきまき3のコードが打ちたかったりしましたが 依頼主も他にアテが無いようでしたし、既存のコード量もそう多くはなかったので、依頼を受ける事にしました。 まきまき3への資金も欲しかったし。

で、コードメンテを本格的に始めたのですがー ……………


#define NDefault 400

double r = 0.3;

char name[80];
int M = NDefault;
int sd = 0;
double V1, V2, V3;
double vector1 = 0, vector2 = 0, vector3 = 0;
double xx1, yy1, xx2, yy2, xx3, yy3;
int std1, std2, std3;
int a = 0, b = 0, c = 0;
int M1 = 0, M2 = 0, M3 = 0;
long t = 0;

    :
    :
    :

int main()
{

    :

    return 0;
}

・・・・・・ ( ゚Д゚) グローバル ヘンスウ タクサン...

ま、まぁ、仕方ない。やってしまっているものは仕方ない。 仕方ない。 仕方n


#define NDefault 400
int M = NDefault;
int sd;
double vector1 = 0, vector2 = 0, vector3 = 0;

void func2(int n)
{
    if(n >= a)
    {
        sd = a + M;
    }
}

// ↓ここからスタート
int func()
{
    func2(sd);

    func3(sd, vector1, vector2, vector3);
}

・・・・・・ func2 ヨ ・・・ オマエ sd コウシン シテルノカヨ・・・ ('A`)

こんなのがポチポチと… …グローバル変数が1文字変数とかもあって、解析マジ混乱… orz


各言語では 「推奨されない書き方」 が存在し、C言語でも結構あれやこれやといわれます。 グローバル変数多用するな! goto は多用するな! とかは有名ですね。 代表的なものは http://www.cmagazine.jp/src/kinjite/c/variable.html *1 コチラに書いてあります。 …代表的って言っても 「他には?」 と聞かれると 「一文字変数を多用してしまう事」 とか 「グローバル に配置すんな! namespace で囲えよ!*2」 とかぐらいしか思い出せないんですが…(ぉ ^^;

で、今回何がビックリかって、本当に社会でこんなコードが出回ってるんだなぁ…と。 このようなコードが大量に生産されていたら、そりゃ現場は火を噴くわ…。 納得。 …そして、職としてのプログラマになろうとしてる私は、大変怖くなってまいりました

あー、職探ししないと…(苦笑 orz


ちなみに、上記のコードはあくまで届いたコードのイメージであり、実際のコードとは全く違うということを付け加えさせていただきます。

*1:C Magazine … ウウッ!!

*2:こりゃC++ですな