日記
行数でお金をもらっているんですか?Edit

今主にやっている仕事は、とあるお買い物システムパッケージをほぼフルカスタムするってものなんだけど、そのベースとなるパッケージの中身がひどくて、ときどき鼻水を吹いてしまう。

ソースのとある関数のコメントとして、「こういう関数を試しに作ってみる。何事も勉強」なんて書いてあるあたりから、かなりやばそうな予感はしていたんだけど、カスタムするに当たって、あまりに可読性の低いソースをなんとか解読してみようと、できる部分だけでもきれいに書き直していったところ、ソースコードが軽く数割は削減できることがわかった。

web系システムだから、

<select name=...>
<option value=...>...
<option value=...>...
<option value=... selected>...
<option value=...>...
</select>

みたいなFORM部品がやまほど出てくるんだけど、そこに既存の値を代入する処理として、

dim selected_index1
dim selected_index2
dim selected_index3
dim selected_index4
if selected_value=0 then selected_index1=" selected"
if selected_value=1 then selected_index2=" selected"
if selected_value=2 then selected_index3=" selected"
if selected_value=3 then selected_index4=" selected"
Response.Write("<option value=..." & selected_index1 & ">...")
Response.Write("<option value=..." & selected_index2 & ">...")
Response.Write("<option value=..." & selected_index3 & ">...")
Response.Write("<option value=..." & selected_index4 & ">...")

とか

if selected_value=0 then
Response.Write("<option value=... selected>...")
Response.Write("<option value=...>...")
Response.Write("<option value=...>...")
Response.Write("<option value=...>...")
elseif selected_value=1 then
Response.Write("<option value=...>...")
Response.Write("<option value=... selected>...")
Response.Write("<option value=...>...")
Response.Write("<option value=...>...")
elseif selected_value=2 then
Response.Write("<option value=...>...")
Response.Write("<option value=...>...")
Response.Write("<option value=... selected>...")
Response.Write("<option value=...>...")
elseif selected_value=3 then
Response.Write("<option value=...>...")
Response.Write("<option value=...>...")
Response.Write("<option value=...>...")
Response.Write("<option value=... selected>...")
end if

とか平気で書いているし。しかも、同じ処理を行うのに、似たような冗長さで違った表現のコードを、一つのソースに(同じ人が)複数書いている。無駄にコードが長くてとても読みにくい。

プログラミング初心者が書いたからコードが冗長になったというのならばまあしょうがないかなとも思えるけど、こういう処理を複数パターン混ぜて使うってのは、単なる素人技とは思えない。わざとコード行数を多くしつつ可読性を低めて、水増ししていることがばれないように工作しているんじゃないかという疑いがぬぐえない。

っつーか、こんなコードをベースにフルカスタムしつつ機能拡張するくらいだったら、はじめっから新規で書き直した方が楽だよなー。

ちなみにひどいコードのお約束である、

i=0 'iを初期化する

という無意味なコメントもちゃんと入っていたさ。有用なコメントはほとんど入っていないのにね。

Published At2002-02-27 00:00Updated At2002-02-27 00:00