初めてでも書ける! クソコード入門
「ああもう! 訳が分かんないんですよ!」
私は自室で誰に聞こえるでもない声を上げていた。それというのもJavaだからガベコレあるしメモリ管理なんて気にしないというムカつくやつのせいだ。
「参照残してたらメモリリーグするでしょうが……」
そう、今のバイトではJavaを書いているんです。ガーベッジコレクション、それは確かにいいものでしょう、しかしです、循環参照や使い終わったポインタにnullを入れないせいで思いっきりメモリリークしていました。
※ガーベッジコレクション:通称GC、不要になったメモリを解放してくれる機能
「万能の魔法なんてないことを未だに信じられない人なんですかねえ……」
気が重い、これからこの救いようもないコードを修正する必要があります。そもそもバイトにやらせるようなことじゃないでしょこれ。
このコードを書いたやつに銀の弾丸をぶち込んでやりましょうかね……
そうは言っても引き受けた以上責任はあります。たとえどうしようもないコードでも動くまでは持っていかないといけないのです。気が重いことこの上ないですがこれを修正しますか……
とりあえずコンパイルは通っているので動かしてみる。ゲームのアプリだがあまりにも実行速度が遅い、とくに弾幕が広がったときの処理オチには感心さえしそうになるような代物でした。
コードを読んでみると……
for(int i = 0; ary.length > i; i++){
以下略
}
これを書いたやつの正気を疑います……え? なにこれ? ループごとに配列の長さを毎回測るって正気でしょうか?
そもそも拡張for文を使えとか、synchronizedでロックをしていないので配列の長さが変わったら例外で落ちるんですが……
「このコード書いた人は自分で実行したことがないんですかね……」
気が沈む、ちなみにこのコードが出てきたのは読み始めて十分です、このレベルのコードが残り全部に入っているのでしょうか? ゾッとした寒気が背筋を伝います。
「いいや、お兄ちゃんに直してもらお」
別にバイトに守秘義務なんぞ無いに等しいのだ。だったらお兄ちゃんとやれば気が紛れるかも知れない。そう思ってお兄ちゃんとこのクソコードの修正をお兄ちゃんにも協力を仰ぎました。
「で、出てきたコードがこれと……」
「はい……」
さすがのお兄ちゃんも呆れかえっている。まともな開発者なら『これはヤバイ』と思ったものは修正しますし、そうでなくてもテストの段階で非現実的な計算量になっているのは分かるはずです。まさか作者はコンパイルが通ったというだけでマスターブランチにこの変更を投げたのでしょうか? いよいよやべーコードなのが明るみに出ます。
そうして夜十時。
「お前明日も学校あるだろ? 俺に任せてそろそろ寝とけ」
「いえ、お兄ちゃんだけを犠牲にするわけには……」
お兄ちゃんは自信があるのかはっきり言います。
「この文量なら俺でもなんとかなるし不満なら明日現場で直してもいいだろ、たまには頼ってくれ」
うぅ……お兄ちゃんに私が頼るのですか……とっても気が進まないですけど、もう眠いのも事実ですし……でも……
「はぁ……分かりました、お任せしますけどできないときは素直に私に投げてくださいね? 時間があればなんとかなりそうなことが多いですから。
……翌7時
私がお兄ちゃんの部屋へ行くとお兄ちゃんはPCの前でキーボードを打っていました。
「あの……お兄ちゃん、徹夜ですか……?」
「ん? ああ、一応お前に養ってもらってるしな、形はどうあれ協力位するさ」
そう言ってお兄ちゃんはコードをUSBメモリに入れて渡してくれました。
お兄ちゃんの優しさが目にしみますね……
朝食を終えて、学校に行き、バイト先のソフトハウスで修正コードを渡すと、『なにこれ? まともに動くんだけど! すごいわね、できるなら初めから言ってよ』とのことでした。
私は「そのくらい余裕ですよ」と答えましたが、その顔が笑っていたかは定かではありません……




