AM5:00に針路をとれ

主に艦これ、たまに閑話

15年以上メンテされていない社内ツールをメンテする話

たまにはこういう感じのブログも書いてみる。

 

今の会社で担当している業務の1つで、社内ツールの保守を行っている。このツールは既に15年以上使われているベテラン選手で、Aさんが開発を含めて約13年、Bさんがそれを引き継いで約2年。そして現在私に引継がれるという経歴を持つ。

 

引き継ぎ当初は、全体には手を付けず、その時必要な対応だけを行っていた。最近になって業務に余裕が出てきたため、大幅なメンテナンスに取り掛かることにした。

 

VB.NETで書かれているこのツールはとにかく可読性が悪く、

・5000行近いクラス

 ほとんどの処理を1つのクラスにまとめてしまっているため、ここまで膨れ上がっているようだ。

・大量の改訂履歴コメント

 「200X/XX/XX 〇〇を追加」といったコメントが約100行。バージョン管理ツール云々を抜きにしても、全く役に立たない情報の羅列。未来永劫同じ人物が保守を行うのであれば、日記ぐらいの価値はあるかもしれない。第三者である私にとって唯一参考になったのは、このツールが15年以上使われているということだけである。

・検討してないけど「検討中」

 要所要所に「検討中」というコメントともに、コメントアウトされた処理が残されていた。「検討中」を残していったのはAさんなのだが、今後Aさんが保守作業を行う可能性が皆無に等しいため、現在では検討さえ行われていない。仮にAさんがこのコードを見直したところで、何を検討していたかを思い出せるのだろうか。

・機能していないイベントやコントロール 

 例えばMenuStripが配置されているが、その上にTabControlを重ねてしまっているため、絶対に使用されることがないだとか。

・コメントが読みづらい

 Aさんのコメントが、ほとんど口語で書かれてしまっているため、非常に読みづらい。「〇〇するよ」「しーらない」「〇〇と言われたから追加」

・全く同じ処理が10回以上書かれている

 タイトルのまま

・なにこれ?


    Private Function Sample1() As Boolean
  
      Dim hoge As Boolean = Sample2()
      
      If hoge = False Then
        Return False
        Exit Function
      End If
    
      Return True
  
    End Function

 

あげるとキリがないので、このぐらいにしておく。

 

とにかく最初に取り掛かったのは、不要コメントの削除、機能していないメソッド・コントロールを削除。これだけで1000行近くが削れた。

さらに同じ処理を別メソッドに抽出したり、クラス内の処理を機能ごとに分割することで、1ファイル内の最大行数を2000行以内に抑えることに成功。

 

しかしここで2019年の仕事納め。今年の汚れは今年のうちにとはならず。2020年はまずコメントを修正するところから始めようかと。