1

スタイル/良いコードに関する質問があります。それは「機能しているのでそれほど重要ではない」ものの1つですが、それでもコミュニティからの洞察が欲しい. 私は C# を使用していますが、この方法論はあらゆる OOP に適用できます

だから私はクラスを持っています。それは本質的にデータのコンテナです。10 個のパラメーターを渡す代わりに、クラスをデータベースに渡します。データベース書き込みクラスは、各データ メンバーをそれぞれの SQL パラメータにドロップし、データベースでストアド プロシージャを実行します。

私の質問は、クラスにデータを収集するときに、それらすべてを Change イベントに関連付けているということです。お気に入り

private void chkIce_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chk = (CheckBox)sender;

        if (chk.CheckState == CheckState.Checked)
            outTruck.setWeather(2, true);
        else
            outTruck.setWeather(2, false);

    }

    private void txtTrailer_TextChanged(object sender, EventArgs e)
    {
        TextBox txt = (TextBox)sender;
        newRecord.TrailerNumber = txt.Text.ToString();
    }

これが入り、ユーザーが選択したものに基づいて、クラスの氷の値を true/false に設定します。またはテキストを設定します。これは非常に簡単ですが、各コントロールには独自のイベントがあるため、コードのオーバーヘッドが少しあります (また、送信側の行のキャストが過剰になる可能性があります)。もう 1 つの方法は、送信時にすべてのデータを収集することです。次に、すべてをクラスにドロップします。エンティティ フレームワークと ORM と呼ばれるものが他にもありましたが、私は現在 .NET 3.5 で立ち往生しており (時代と共にあります)、4.0 に到達するまで適用されないことを読みました。基準があるのか​​あまり読んでいませんが、何よりも好みのようです。それで、仲間のスタックオーバーロウイアン...あなたの考えは何ですか?

4

1 に答える 1

0

ポストバックのあるWebページを表示しているように見えるので、オブジェクトをインスタンス化する送信ボタンハンドラー関数を使用して、各プロパティを対応するUI要素の値に手動で設定する方が簡単だと思います。すべてのイベントハンドラー(選択の変更、フォーカスアウトなど)でデータ設定を行うには、ページ全体をリロードする必要があります。(次に、それらのポストバック全体でそのオブジェクトを永続化する必要があります-退屈でエラーが発生しやすい偉業ですが、実行可能です。)

デスクトッププロジェクトでも、すべてのUI要素からすべての値を収集して、その送信ボタンのイベントハンドラーでオブジェクトを構築します。

特定のUI要素の状態の変化がオブジェクト自体以外の何かに影響を与える場合は、特定のUI要素にイベントハンドラーを実装することをお勧めします。たとえば、チェックボックスをオンにすると、注文の合計金額が現在の残高を超える可能性がある場合に、より多くの費用がかかる機能が追加される可能性があるため、チェックボックスをオンにすると、ユーザーが送信できるかどうかが決まります。これは、送信ボタンを有効のままにするか無効にするかを確認する場合です。

于 2012-12-09T03:48:03.643 に答える