★ The Tsuchinoko News 2 (つちのこ通信2) ★

重要な話から、どうでもいいことまで。ほとんど役に立たないことを書き連ねています。

【PC】VB6 から VB2010 で うれしかったところ(笑)

f:id:tsuchinoko118:20120725153320j:image:left:w260筆者は 機械語アセンブラ、フォートランからベーシック、そしてカーニハン&リッチーの「プログラミング言語C」出身なので、あまり言語に対するこだわりがない(笑)
いただいたお仕事の大半は、いわゆるVB&VCで書いており、ちょこちょこ仕様変更やバージョンアップが多い部分はVBで書くことが多い。開発工数が少なくて済むから、というのが大きな理由で、できない部分(または、Cの方が向いている場合)は、C++を使ったりしていた。
Visual Studio 2010 になってからも、そのスタンスはさほど変わりがなく、やはりVBを結構さわる。

VB6とVB2010の大きな違いは、なんといっても .NET Framework で、いままでAPIやら、なんというか非常に汚らしいコードを書かねばならない(カーニハン&リッチーに言わせれば、エレガントではない、ということなのだろう)ことも多かったが、.NET になってからは、きちんとした構造化が出来ることが大きく、汚らしいコードを書かずに済むようになってきた。汚らしいとは、いろいろと汚らしさがあるのだが、

(1)Try Catch

VB6では、エラー処理は On Error Goto を使うことが非常に多い。多いと言うよりは、そうしないと書けない。On Error は「エラーが発生したら、あちらへジャンプ」なので、一つのプロシージャの中で、あっちゃこっちゃにジャンプすることになるので、後から見ると、わけがわからないことが多い。そこで、できるだけ On Error Goto に頼らずにコードを核のだが、今度は If 文だらけで、どんどん TAB が右へ右へ、見えなくなるくらい右へ・・・ いずれにしても見づらい(笑)

(2)引数渡しは原則 ByVal

VB6では原則 ByRef で参照渡しというもの。別のプロシージャで安易に値を書き換えることができちゃうので、後から見たとき、わかりにくい。そこで出来るだけ ByVal ByBal ByVal と入力するのだが、非常に面倒(笑)


(3)プロシージャ呼び出しの後ろに()

VB6の場合、プロシージャ呼び出しの後ろに「渡す引数がない場合」()が省略されてしまう。一見それでいいのかも知れないが、C出身の筆者は最初、これにとくにとまどった。コードを見直し修正するとき、あるいは、コードを変更するとき、変数なのかプロパティなのか定数なのかプロシージャなのか、さっぱりわからない。これがVB2010になると、プロシージャには()がつく。見てわかりやすい。

などなど、他にも汚らしさの原因が結構あったのだが、これがVB2010になってからは、非常に見やすくなった。

さらに(これはVBというよりIDEの機能だが)、リアルタイムにあやしい箇所に波線が引かれる。つまらないタイピングミスも入力直後に知ることができるし、引数間違いや、型の間違いなどもつぶさに拾い出し波線が引かれる。少なくとも筆者は、この機能のおかげで、書き上げたプログラムでは、ほとんどバグはなくなった。このことは開発効率にも直結する。

f:id:tsuchinoko118:20120725153321j:image:right:w240
そして爆速入力が可能なコードエディタ。以前はヒント程度だったがVB2010になってから、ちょっとだけ入力→ TAB で、一瞬に長い名前が入力できてしまえるようになった。このことは、分類しやすいように名前を省略しなくても平気になり、わかりやすい名前を使うことに専念できるようになった。当然、開発効率も跳ね上がる。

最後に、ほんとにどうでもいいことなのかも知れないが、筆者は、涙がちょちょぎれそうになったことが・・・

Private function Something( ) as integer

  Dim A as integer

A = 0

  Return A

End Function

と、Function に Return が書けるようになったことだった。
なんと VB6 では書けなかったので( Something = A としないといけなかった)、慣れるまでコンパイル時にバグでまくり!

ともかく 最近では VB6 での新規プログラム、増築プログラムは、とてもじゃないが書けなくなってしまった(理由。めんどうくさいから)(笑)


その他、宣言が構文の途中でOKになったり、いろいろとお気に入りのことは多い。感謝感謝だ。