VBAでひどいコードに出会った
最近は仕事でVBAの改修をしています。かなり機能が変わるのでほぼ作り直すような感じなのですが、なかなかびっくりするようなコードでした。
反面教師にする意味も込めて紹介をしたいと思います。
名前と規則が意味不明
再現するとこんな感じの変数や定数が宣言されているのですが、名前から何をしようとしているか皆無です。XYZとかシティーハンターに連絡をとるのかと思いました。
ちなみにAAAは要素の一番始めを表す変数で、XYZは最後を表す変数でした(ZZZじゃないんだ…)。かと言ってコメントで変数名を説明するくらいならちゃんとした名前をつけて欲しいです。
ちなみに「ワークシートを保存する」とか「ワークシートを閉じる」といったコードを見ればわかるようなところにはきちんとコメントがついていました…。
また、変数名は大抵小文字から始まると思うのですが、宣言によって最初が大文字だったり小文字だったりばらばらでした。
さらにプロシージャの冒頭でまとめて変数宣言しているのでスコープがわかりずらいです…。
コメントが謎
おそらく一番最初の作った人がいて、1度改修が入っているような形跡があったのですがその中に以下のコードがありました。
いや多分そうだと思うよ?(笑)下のほうでエラーになったらカウントアップしてたし。きちんとした変数名でないためこういったことがあちこちで起こっていました。
こういうコメントならむしろ入れないほうがいいのではないでしょうか?
大量のコメントアウト
そして全体の1/3くらいはコメントアウトされておりとても見づらかったです。コメントアウトされたコードに対しても、当然コメントがついているのでどのコードに対してのコメントなのか、いつか使うからコメントアウトしているのか、よくわからなくなってきました。
さらに「2014年6月追加」みたいなコメントが大量にあってよけい見づらくなっていました。
最後に
変数名や定数名を規約通りに直して使用するところに移動してリファクタリングをしていたら1日終わっていました。
ここまで読むのに苦戦したコードも初めてですが、案外楽しく修正できました。
VBAの書き方とか調べると今回紹介したコードと真逆のことが推奨されていますが、いざこういうコードを修正するとなると大変ですね…。
ただ変数名が短くまとめられていたのでぱっとみは綺麗に整頓されて見れるのがまた悲しい…。
自分も気をつけてコードを書こうと思います。