1

私は .net を初めて使用し、以下のようなオフィスのいくつかの機能に取り組んでいます。

Jobs.aspx.cs

protected void gvActionItems_RowEditing(object sender, GridViewEditEventArgs e)
{
    //setting the value of the user control property 
}

JobUserControl.ascx.cs

public int _usrcontrolproperty
{
  get{return _usrcontrolproperty;}
  set{
    //depending on the value of the property fetch the data from the database and binding those data on the user controls FormView
    }
}

protected void fvJob_DataBound(object sender, EventArgs e)
{
   //Making the dynamic UI changes that is setting properties of controls  depending upon the values of binding data
}

これは、フォーム ビューのデータバインド イベントで必要な UI の変更を行った方法ですが、シニアの 1 人が、「アーキテクチャ コードの設計が悪いため、余分なメモリの問題があり、データ バインド後に _usrcontrolproperty セット メソッドで UI の変更を行う」と述べています。. だから知りたい

1) Is this really bad architectural code ? If bad then why ?
2) And if my seniors way is bad then also Why ? 

データのバインド時にUIの変更を行うべきだと思ったので

4

2 に答える 2

1

あなたの先輩が自分の主張を裏付けることができないなら、彼/彼女は本当にあなたが学ぶべき人物ではありません. 彼/彼女が言及している「メモリの問題」が何であるかはわかりませんが、削除されたコードではわかりにくいです。

そうは言っても、プロパティ セットでのデータ バインディングを再考するのは、純粋に、人々がこのプロパティの設定を開始したときに、後で「落とし穴」に自分自身を開くためです。

代わりに、Refresh()方法があります。したがって、呼び出しコードは次のようになります。

UserControl.Property = value;
UserControl.RefreshData();

これにより、呼び出し元の API は、その時点で更新するか、決定を延期するかを選択できます。

于 2013-08-22T05:50:05.363 に答える
0

私はこれについて@Simonと一緒にいますが、RefreshData(value)メソッドがあります。したがって、呼び出しコードは次のようになります。

UserControl.RefreshData(value);

これにより、呼び出し元の API は、その時点で更新するか、決定を延期するかを選択できます。このメソッドでは、として使用できます。

 Public static RefreshData(<datatype>data)
 {
   //Assign the value to the property 
   //Get the data from database 
   //Bind the data 
 }

また、プロパティを他のクラスに公開したくない場合は、プロパティをプライベートまたは保護することもできます。

于 2013-08-22T07:19:59.853 に答える