VB怖い

私はC#erです。

先日、2006年に作成したアプリの改造案件を渡されました。

言語はVBでした。
C#erですが、VBはカタコトくらいには読み書き出来ます。

そのアプリは、VB.NETで書かれているフォームアプリケーションでした。

2006年のソリューションなのに、VS2019で開けました。すごい。

開いたら、まず、Program.vbなんて存在しないことに驚きました...
どこでフォームのインスタンス作ってるんだと思いましたが、なんとか、プロジェクトのプロパティで「スタートアップオブジェクト」としてメインフォームが設定されているのを発見。

新しい画面を追加する改造なので、
ここはベターに、メインフォームから別のフォームを呼び出す処理をコピペしようとしたところ、

            frm2.Left = Me.Left + (Me.Width - frm2.Width) / 2
            frm2.Top = Me.Top + (Me.Height - frm2.Height) / 2
            frm2.Show()

...Newしてないんだが?!

調べていたらこちらを発見

既定のインスタンスとか暗黙のインスタンスと呼ばれるもので、VS2005のVBで復活しました。賛否両論あると思います。

Visual Basic 2005 の My 機能の検証 http://msdn.microsoft.com/ja-jp/library/ms379610(v=vs.80).aspx

VB6.0 で「Form の既定のインスタンス」を防ぐには? http://blogs.wankuma.com/jeanne/archive/2006/10/25/42449.aspx

うそだろ...

ただヘイシャは「リリース済みアプリのリファクタリングはよほどのことがない限りしない」方針なのと、 私個人として「できる限りコピペで実装したほうがコードの可読性は高まる」と思っているため、 同様にNewせず実装しました。

...このあと上司に機能レビューしてもらっていたところ、 前回までの実装で挙動がおかしかったためソースを見られ、 結果上司は「新しく書くコードはNewする」という方針にしたのでコードを書き換える作業が生じましたが それはまた別の話...

とにかく、 C#erからすると、Newしないで書けるVB怖い!という話でした。