昔のクソコードを晒してみる
昔のファイルを整理してたら卒論の時に使った200行程度のperlのソースが2つほど出てきました。
何の気なしに開いてみましたが、これがもう目を背けたくなるほどに酷い。
今でもまともなコードなんて書けませんが、それでもこれが本当に2年前の私かと思うほどに酷い。
高校時代に書いた小説のプロットを発掘した時の苦しみを思い出しました。
私は卒論に関して12月下旬まで何にもせず(一文字も書いてないとかじゃなく研究自体何もしてない)、そこから2週間足らずで2万字でっち上げるという救いようのないゴミでした。
授業以外何の知識もないバカが締め切りに追われてネットからのコピペを繰り返し、とりあえず動けばそれでよしとするというクソコード降臨の条件としては役満みたいなとこあったので、こうなるのも当然かもしれません。
どうもブラウザの履歴ファイルを読み込んで解析もどきみたいなことをしたかったらしいですね。全く理解できないけど。
我ながら酷すぎて戦慄したので戒めも兼ねてクソコードを記録しておこうと思います。
------------------------------以下吐き気を催すクソコード--------------------------------
驚きの9行目からそびえ立つクソ
##use Encode;##文字化け対策→なぜか治ったのでコメントアウト
"なぜか治ったので"
"なぜか治ったので"
"なぜか治ったので"
##以下確認のための出力
=pod
-----適当にprintするクソコード-----
=cut
消せよ
これあと3回くらい出てきて頭痛くなりました。
※=pod ~ =cutはperlにおける複数行コメント
for(my $a = 0; $a <= $g; $a++){ ##$gはGroupの数
じゃあ$GroupNumとでも書けや!!!
と思ったらこんなの序の口でした。
for(my $b = 0; $b < @{'Group'.$a}+$count; $b++){ ##検証する配列名のカウンタ
DEC: for(my $c = 0; $c < @{'Query'.$b}; $c++){ ##検証する配列の要素数のカウンタ
for(my $d = 0; $d < @{'Group'.$a}+$count; $d++){ ##比較する配列名のカウンタ。$countを足しているのはGroupの要素が削除された時要素数が減るため
for($e = 0; $e < @{'Query'.$d}; $e++){ ##比較する配列の要素数のカウンタ
はい。
ちなみにこのループの中はこんな感じのがいっぱい
##print $b," ",$c," ",${'Query'.$b}[$c],"\t",$d," ",$e," ",${'Query'.$d}[$e],"\n";##デバッグ用出力
これで出力された文字列を見て私は何を読み取っていたのだろう。
@hoge = split(/\s| |\t/,$line);
$num = substr($hoge[0],-3,2);
$ev = substr($hoge[1],3,1);
$Time_array[$count] = $hoge[2];
まさかのhoge先輩登場。もちろんコメントはない。
Time_arrayとかいう意味ありそうで何も言ってない変数名が神に見えてくる。
for(my $a = 0; $a < @Dif_array; $a++){
$tt = $tt + $Dif_array[$a];
}
for(my $a = 0; $a < @Dif2_array; $a++){
$tt2 = $tt2 + $Dif2_array[$a];
print $Dif2_array[$a],"\n";
}
$t_av = $tt/@Dif_array;
$ct_av = $tt2/@Dif2_array;for(my $a = 1; $a < @Dif_array; $a++){
$w = $t_av - $Dif_array[$a];
$w = $w * $w;
$b = $b + $w;
}
for(my $a = 1; $a < @Dif2_array; $a++){
$w2 = $ct_av - $Dif2_array[$a];
$w2 = $w2 * $w2;
$b2 = $b2 + $w2;
}$st = sqrt($b/(@Dif_array));
$st2 = sqrt($b2/@Dif2_array);
これ何やってるかわかりますか。
######時間の差の平均と標準偏差の計算###########
だそうです。そうなんだ、すごいね。
ちなみにこれサブルーチンとかいう小賢しいものではありません。
連綿と続く一枚岩のメイン処理の一部です。男らしいですね。
print OUT5 "\n","<コメント>(もし何か気づいたことや感想等あればこの下にお願いします)";
死ね。以上。
あ、ちなみにこのコードは卒論に参考資料としてほぼ全て載っけました。字数稼げるからね、仕方ないね。
なんていうかこう、書いててどっと疲れました。
勉強しよう……