ラピュタは本当に存在したんだ!!
先日私のところに 「既存のアプリの機能拡張して欲しい」という依頼がやってきました。 まきまき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 … ウウッ!!