新・闘わないプログラマ No.182

そんなこと言ったって…


「そんなこと言ったって、これで動くんだから、それでいいでしょ?」
「だからダメだってば。プログラムは動けばどんな作りをしたっていい、ってわけじゃないの!」
「だーって、動かなけりゃ意味無いじゃないですか」
「…」
「んじゃあ聞きますけど、どこが悪いんですか?」
「まず、あれだな。そのグローバル変数の山、それはいったい何だ?」
「そんなこと言ったって、変数をあっちこっちの関数に持ちまわるのって面倒じゃないですか。何十個も変数があるのに、全部、関数を呼び出すときに並べて書くんですか? そんなことしたら余計分かりづらいと思うんですけど」
「だからさあ、なんで全部の情報を持ちまわらないといけないの? その関数で必要な値だけ引数で渡せばいいじゃない」
「だーって、どの関数でどの変数を使うか、なんて考えるの面倒じゃないですか。ぜーんぶグローバルにしておけば、そんなこと悩まないですむし、何も面倒なことをやらなくてもいいじゃないですか」

「ところでさあ、この配列、大きさが10なのに、添字が10以上になることが無いか?」
「ならないんじゃないですか? テストでは問題なく動きましたよ」
「それから、ここ、文字列の最後にnul文字を入れ忘れている」
「それもテストでは問題ありませんでしたよ」
「いずれにしても、ダメだよ、これでは」
「どうしてですか? テストではちゃんと動きましたから、大丈夫ですよ」
「だから、それはたまたまうまく行っただけだってば」
「うまく行けばいいじゃないですか」
「だめ、直せ」
「せっかくうまくテストが通ったのに、いまからわざわざ直させるんですか? それって時間の無駄じゃありません? 直したことによって、せっかくうまく動いていたプログラムにバグが出るかもしれませんよ」
「おまえ、面倒だからやりたくないだけなんだろう。バグが出るもなにも、いま現在、そのプログラムにはバグがあるんだから、それを直せ、って言っているの!」
「ちゃんと動くんだからバグは無いですよ。テストもちゃんとやったし。なんならもう一度テストしましょうか?」
「だから、そういう問題じゃないの!」

「それからさあ、この『for (i = 0; i < 100; i++) count[i] = 0;』の『100』っていったい何だ?」
「からかっているんですか? そんなの見りゃわかるじゃないですか。『count』っていう配列をゼロに初期化しているんですよ。『100』は配列の大きさが100だから、そう書いているんじゃないですか!」
「それはいいけど、その『count』って配列、『int count[MAX_COUNT];』って宣言しているやんか」
「だからあ、MAX_COUNTはヘッダファイルの方で100って定義されているんだから、配列の大きさは100でしょ? 100でいいじゃないですか、何がまずいんですか?」
「だから、何でfor文の中で『100』っていう即値を書くんだ、って言っているの!」
「え? だから、配列の大きさは100でしょ? だから100って書いたんですけど。配列の大きさが100なのに、200個分初期化しろ、とでも言うんですか?」
「まったく、わからないヤツだなあ。宣言の方で『int count[MAX_COUNT];』って書いているんなら、初期化の方だって『for (i = 0; i < MAX_COUNT; i++)』って書かないとまずいだろう、って言っているの!」
「別にどっちだっていいと思うだけどなあ…」
「いったい何のためにヘッダファイルの中でMAX_COUNTってのを定義していると思っているの?」
「さあ?」

「おい、このソース、インデントがむちゃくちゃだぞ。これじゃ、どの括弧とどの括弧が対応しているか分からないじゃないか」
「でも、別にプログラムにバグはありませんよ」
「だからさあ、そういう問題じゃないの!」
「そんなこと言ったって、ちゃんと動くんだから、そんな細かいこと気にしなくたっていいじゃないですかー」
「だめー、直せ。それから、このコメント、いったい何だ?」
「コメントがどうかしましたか?」
「あのなあ、『i++; /* iに1を足す */』って、そんなん、見りゃ一発で分かるだろうが」
「別にいいじゃないですか、無いよりマシでしょ?」
「そんなコメントなら、無い方がマシだって」
「あのー、ちょっと言っていいですか?」
「ん? 何だ?」
「このソース、先輩が昔作ったソースをコピーして作ったやつなんですけど。インデントもコメントも、ぜーんぶ先輩が書いたそのまんま」
「え゛?」

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp