C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.41389 の関連記事表示

<< 0 >>
■41389  Re[7]: C#における値渡しと参照渡しのコーディングについて
□投稿者/ simano -(2009/09/18(Fri) 19:24:13)
    No41377 (魔界の仮面弁士 さん) に返信
    > 2009/09/18(Fri) 16:45:16 編集(投稿者)
    >
    > > ですが、「参照渡しを行いたい需要もある」、
    >
    > 引数の型が値型であるか参照型であるかに関わらず、
    > 引数に参照渡しを必要とする場合というのは通常、
    > No41329 のパターンにほぼ限られるかと思います。
    >
    > それ以外のパターンだと、P/Invoke の場合ぐらいでしょうか。
    >

    了解しました。

    >GetFromServer メソッドの利用側に、どのような記述を行わせるのであれば、
    >「一苦労しない」方法になると思いますか?

    魔界の仮面弁士さんの挙げた例のうち、個人的には「出力引数」が一番良いと思いました。
    サーバの返すエラーの種類をアプリケーション側で細かく把握できたほうが、
    融通が利くためです。

    その際、以下のように、ErrorDefinitionクラスを作成し、エラーの種類を定数で持たせたいと考えました。
    これを共通のライブラリに入れて、dll・アプリケーションの双方から参照させるようにしようかと。
    ----------
    public class ErrorDefinition
    {
    public const int CLIENT_ARGUMENT = 0;
    public const int SERVER_FILE_NOT_FOUND = 1;
    :
    }
    ----------

    そうすれば、ビルドしたときにライブラリの定数名が変更されれば、
    アプリケーション(またはdll)のエラー定数の参照箇所でビルドエラーが起きます。
    つまり「dllの変更時にthrowされた例外を取りこぼす」等のうっかりミスが減りそうだと考えます。

    > それは例外に限らず、どのような返し方であっても一緒では無いでしょうか。

    dllとアプリケーション側でthrowする例外のクラスに違いがあるとき、ビルドエラーが起きれば、
    即、問題箇所がわかるので助かりますよね。

    もちろんdll作成者とdll利用者の意識合わせがしっかりして行われていれば対応可能です。
    ですが、それは運用面の問題ですので…。
    人はミスを起こしやすく、人による問題はコード面で防止されるようにしたいと考えています。
    大量のコードがあった場合、チェック抜けは起こりがちだと思うので。

    また、上記のようなErrorDefinitionクラスのような方法を利用すれば、
    その問題が減ると考えました。

    魔界の仮面弁士さんはどのような例外処理を行っていますか?

    >例外だと把握しきれなくて、ILLEGAL_ARG などのint 型(を戻り値や出力引数)で
    >返す場合には把握することができる…という事にはならないかと。

    上記のエラー定数による手段で対応したいと思います。

    >「例外の種類を変える」とは、どういう意味でしょうか?

    以下の意味でした。
    ・MyServerException の例外が、サーバーエラー以外に対しても throw されるようになった。
    ・MyServerException を廃止して、別の例外が throw されるように実装し直した。

    その他のご指摘については、サンプルだから意図が伝わればいいかと
    詳細部分の正確さは省いて書いてしまったことが原因です。
    深い意図はありませんでした。
    内容の未熟さから、お目汚しいたしましたことをお詫び申し上げます。
記事No.41320 のレス /過去ログ71より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -