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する」という方針にしたのでコードを書き換える作業が生じましたが それはまた別の話...