毎度やり玉に挙げて申し訳ないです。@IT の Insider.NET 会議室から。
件名:[C#2005/Windowsアプリ]複数行あるDBデータの保持方法(Insider.NET 会議室)より:
whileでまわす→コントロール名は1,2,3となってるのですが、例えば
i=1;
SqlDataReader rdr = sqlCmd.ExecuteReader();
while (rdr.Read())
{
txtBox(i).Text = rdr["textdata"].ToString();
textHoge(i).Text = rdr["hogedata"].ToString();
i++;
}
という風にコントロール名に可変の数字を入れてもできないな・・・と。
前に、自分のところのことでも書いたけど、こういう、表示してあるデータが直接バックエンドのデータになっているのって、どうなんでしょうね。
Model View Control でも、Document & View でも、アーキテクチャはどうでもいいのですが、User Interface は、魅せることに専念した方がいいのではないかと思うのです。
この質問であれば、Aテーブルと Bテーブルに相当するデータ クラスと、そのコレクション クラスを作り、コレクション クラスを表示用コントロールのデータソースとしてバインドする、と。
なんでこっちの方がいいか。
変更に強いからです。今は Windows Form で作っているかもしれません。しかし、今後 WPF でやってねと言われるかもしれません。このとき、フロントエンドとバックエンドと直につながっているものを修正する修正量と、フロントエンドのプロパティをチョコチョコと修正する修正量と、どちらが多いか。
修正量だけではありません。直結していると、フロントエンドに入力の検査をコーディングすることになります。入力値の検査は、フロントエンドの変更には依存しないはずです。それなのに、修正しなければなりません。修正したら、テストをしなければなりません。
テストをする時も、UI をテストするのに、自動化ツールを使うのは困難です。しかし、UI とデータが分離していれば、データを扱う部分のテストはほとんど自動化できます。
こういうことにかかるコストを、どう見ますか?
投稿日時 : 2007年10月16日 22:24