汚いコードとは何か?
プログラムは一見動いているけれど、なんかちょっとおかしい。微妙に計算が合わない。そんな感じになる。コピペで作ったプログラムというのは、大雑把な形になるのは早いが、バグがなかなか取りきれないというのは、こういうこと。
誰かが書いた膨大なコードをちゃんとチェックして、円周率が同じ値に統一されているかを確認する作業は結構大変で、場合によっては自分で書いたほうが早いし確実ということもある。
単純過ぎて実感がわかない?じゃあ具体例。
惨憺たる評価だった某オンラインゲーム。何かとサーバーがダウンすることで多くのユーザーの不評を買った。おそらく通信エラーの処理をしていなかったと思われる。
社内でテストした時はLANだから安定していて、通信エラーが起きなかったのだろう。でも正式リリースして世界中のPCとインターネット越しに通信するようになると、いろいろな理由で通信エラーは起きる。
通信エラーが起きることを前提にプログラムをしていないと、内部のデータが矛盾してしまい、サーバーが止まってしまう。エラー処理というのは命綱のようなもの。「なくてもとりあえず動くからいいや」と手を抜くと、必要な状況になったときに悔やんでも悔やみきれない。
* * *
しかもエラー処理というのは、後から付け加えて済ませることができるようなしろものではない。ときどきオマケみたいに考えている人がいるけれど、実は一番複雑な部分。時には設計全体の方向性を決定づけてしまうほど。
銀行の送金で途中でエラーが起こった場合、お金がどこにもなくなってしまっては困る。かといって両方の口座に残っていても困る。送金が完全に完了するか、送金が全く行われないか、どちらかでないといけない。これはトランザクション処理といってコンピュータサイエンスの一分野。
まずエラー処理はなしである程度作って、後から付け加えようというものではないのだ。
執筆: この記事はメカAGさんのブログからご寄稿いただきました。
