2009-08-14 13 views
0

Visual Basicを使って開発するのは初めてですが、C#/ C/C++/JAVA/Haskellなどの豊富な経験があります。Visual Basicの入力とキャスティングの質問

私はコードを維持しているのですが、型宣言がちょっと怠けているようなコード例が見つかりましたか?私はオブジェクトとして宣言されたString型としてのみ使用されている無数のStringsを見てきました。 VB.NETのオブジェクト指向の機能が登場する前に、メソッドが複数の型を取ることを保証するためにこれが必要でしたか?なぜ誰がこれを行うだろうか?

答えて

1

一部のVB6エキスパート、たとえば「the Mandelbrot Set」は、すべての変数にVariantsを使用することをお勧めします。あなたは早いアヒルタイピングと呼ぶことができますか?これはむしろ議論の余地がありました。私たちの多くは、それが災害のレシピであると考えていました。

しかし、このようなコードがたくさんあるはずです。 modern conversion toolsが登場する前に、VB.NETにアップグレードするとvery hardになります。 Visual Studioのアップグレードツールでは、バリアントが表示されるたびにパニックが発生します。限られたリソースで本当に本当にアップグレードが必要な場合は、すべてのバリアントをObjectに変更することが最も悪い選択肢になると思います。明らかに結果コードは恐ろしいでしょう。

徐々にリファクタリングすることができます。あるコード領域で作業するときは、宣言をより具体的な型に変更することができます。

+0

だから、どのように変種の海をデバッグするつもりでしたか:実行時に何かが間違ってしまうのを待って、有用なエラーを願っていますか?このコーディング方法は実際には機能しましたか? 偉大な答えです。 – user142350

+0

まあ、私はいつもペストのようなこの方法を避けていたので、本当に効果があるかどうかわからないと思います!しかし、それがうまくいけば私はかなり驚くだろう。 – MarkJ

5

怠け者と古いVB6の習慣が繰り越されています。

+0

これは、メソッドが複数のメンバーを取り込むことができるように、正しいのですか?関数をオーバーロードするのではなく、任意のものを取り込み、それを使って何かを行うメソッドを作成します。 – user142350

+0

閉じるが、実際のデータ型を指定する必要はありませんでした。メソッドのパラメータの可変リストを取ることは、どのタイプのパラメータも受け入れることとは異なります。あなたが持っているものは、VB6でVariantを使用するのと同等の "あらゆるタイプの1つのパラメータ"シナリオです。 –

3

VB6にはさまざまな種類があり、注意して使用することを意図したバリアント型がありました。 .Netが出てきたときに、(コードを変更するだけでなく)そのための唯一の変換は、オブジェクトを型として使用することでした。

複数の型を取るメソッドについて記述したように、コードに柔軟性が必要と思われる場合は、間接効果やコード変換効果をVB6から呼び出すことは間違いありません。

しかし、オブジェクトとして宣言された文字列型のコードが表示されている場合、これはVB6の怠惰と二日酔いよりはるかに悪いです!それはひどく貧しいデザインと気遣いがないように思えます。

関連する問題