5/20/2009

デフォルトコンストラクタ

なんだか、VBにも慣れてきましたが、私はC#スキーです。

VisualStudioでWindowsFormApplicationをつくっている人で、困ったことにならないように事前に注意。Formから派生したものでDesignerをつかってレイアウトなどをいじる人は、絶対にデフォルトコンストラクタ以外のコンストラクタを作らないこと。
引数なしの単純なコンストラクタ以外を作ると一発で駄目ですっていわれます。
コマンドライン引数がほしいときは、Application名前空間のものを使えばいいと思います。
それ以外にもLoadイベントの中でエラーが起きると、Designerが死にます。UserControlもオブジェクトファイルなりDLLなりがないと不安定になります。

VBは基本的には型指定なしでガンガンコードを組むための言語なのですが、なぜかデリゲートに関してはナイーブです。匿名メソッドへの対応がなかったり、NULL参照がしにくかったり、意外とFrameworkとは相性が悪かったりします。クラスメソッドをインスタンスから使えたりするので、これは非常にややこしいです。暗黙的に引数に指定してくれると楽なのですが、そうもいかないのでなんだかなぁです。

話は変わりますが、UserControlはただ作るのでは、まったく使えません。かといって、全てのコントロールをAccess可能にして使うのも下策だと思います。確かに扱いやすいのですが、それでは結局はただ配置しただけで、むしろ複雑な操作を要求するようになるだけでいまいちです。カプセル化やインターフェイス、イベントドリブンの組み方を少しは理解しておいてからおこなうと、すっきりとしたものが作れます。またこれに付随して属性の勉強を始めるとできることが目に見えて増えるので、この経路での属性の学習はありだと思います。
ただ、このUserControlはVSとの親和性が異常に低いので、いろいろなところでエラーやミステイクの温床になるので、気合を入れて使ってください。ただ、これは慣れると、構造がすっきりして見易く、カプセル化や抽象度の変化についての考えが深まるので、使えなくなると逆に不満が爆発するでしょう。
でもマジUserControlでよく使うコントロールや巨大なコントロールをクラスにすると扱いが簡単になって幸せです。オブジェクトのネストが5とかになると管理がしにくいので、一考の余地アリです。

0 件のコメント:

コメントを投稿