思い出

面白いのを見つけたので、ちょっと自分の思い出話なんかを。
ここに書かれてるほど極端なのはないけど・・・

派遣PG時代の思い出 - Togetter

  • ifの模様

VB5のシステム改修案件であった。
確か10階層くらいは超えてた見事な模様。

If ・・・ Then
  If ・・・ Then
    If ・・・ Then
      If ・・・ Then
        If ・・・ Then
          If ・・・ Then
            If ・・・ Then
              If ・・・ Then
                If ・・・ Then
                  If ・・・ Then
                    2、3行のコード
                  End If
                End If
              End If
            End If
          End If
        End If
      End If
    End If
  End If
End If

みたいな(笑)

  • 変わった変数名

上のifと同じソースの中だったんだけど、
一つのメソッドの中で
kFlag, kkFlag, kkkFlag, kkkkFlag
という変数が使われていた。
すべてbool。
当然コードの中でtrueやらfalseやら代入してたりIfの条件に使われてたりするんだけど、コメント一切無し。
何やってんだかわかりゃしない。
kって何だ(笑)

  • 無限ループ地獄

これも上記のシステム。
何でか知らないがモーダレスウィンドウをいくつも表示するような作りになっていた。
しかもフォームが閉じられたかどうかを呼び元のフォームで監視している。
(DoEventsを使ったループ)
つまり画面に見えているフォームの数だけ裏でループが動いている。
これの何が問題かって、ステップ実行ができない。
どこかにブレークポイントを貼って止めても、一行実行するたびにフォーム監視のループに制御が移ってしまうのだ。
そうなると、自分がデバッグしたいコードにいつ制御が戻るのかまったくわからない。
最初のうちはそれでも何とか我慢していたが、到底やってられずステップ実行はあきらめて手当たり次第にログを出力しまくってデバッグしてたな〜
そのうち一々ファイル開くのも面倒になって、別プロセスでウィンドウ表示してそこにプロセス間通信でログ送るようになったり・・・

  • 無意味なクラス

とあるjava製のwebサイトの改修案件。

class Hoge {
  何かの処理
}
class AHoge extends Hoge {
}
class BHoge extends Hoge {
}
class CHoge extends Hoge {
}

てな感じになってて、Hogeクラスにはまあそれなりに中身が書いてあるんだが、Hogeを継承しているクラスにはまったく個別の実装が無いのだ。
無意味なクラスだからといって使われていないわけではない。
いたるところでAHogeだのBHogeだの使われてはいる。
前からいる人に何でこんなことになっているのか聞いたら「何となく」
全部Hogeに集約していいか聞いたら「改修内容と関係ないからダメ」
自分が担当した画面でHogeの機能が必要だったのでHogeを直接使っていたらソースレビューで「他のと合わせてクラス新しく作って」
こりゃやってられんわと思いましたわ・・・