スパゲッティを解きほぐす
プログラムがスパゲッティになることはままあること
ままあるとは言え、それを直す苦労は計りしれず、
その作者を呪い殺したくなるものだ。
しかし、自分は本当にそのようなコードを書かかないのか?
自分が書かかないとは言い切れない。
コーディングする一人として自戒のためにも実際に出会ったコードをさらしておく
Perl/CGIでの事例
var $q = new CGI; var $ac_money_n = $q->param('ac_money_n'); 〜〜〜〜〜〜 if( !$ac_money_n && $ac_money_n != 0 ){ # ここがやばい! print "Content-type: text/html\n\n"; print "Invalid Parameter\n"; exit(); }
前半数行ではクエリパラメータを取得して変数’$ac_money_n'に代入している。
そしてその後の条件式が問題である。
「’$ac_money_n’がundef、かつ0でない」と言っているのである。
。。。。
ありえない。。。。
普通に考えたらすぐに気付くべきところだが、
ここに行き着くまでに既に数百行の見通しの悪いコードを読んでいたためか、
ずっと見落としていた。悔しい。
いちおう本来あるべきであろうコードは以下。
if( !$ac_money_n || $ac_money_n == 0 ){ # きっとこうであろう print "Content-type: text/html\n\n"; print "Invalid Parameter\n"; exit(); }
続くかも