0

過去 2 年間、倉庫のポータブル デバイス (Windows モバイル) で実行される CF .NET 3.5 用のアプリを開発しました。最初からプロセスに飛び込み、多くの間違いを犯しましたが、徐々に修正しています。出てきたのは、この方法で作成されたアプリです: プロセス全体を開始するためのメイン フォームは、データ フォームを自動的に作成し、それはずっと生き続けます。このデータフォームは、ユーザーがサーバーから挿入または要求するすべてのデータを保持します。他の形式は基本的に、データを操作するメソッドを含むデータのビューです。

それは動作しますが...私はこれを正しい方法で行っていますか? それとも、本当に基本的な何かが欠けているのでしょうか?

4

1 に答える 1

2

データフォームを作成し、RAM のように使用しています。データを表示することはなく、アクセスするためにそこに保存するだけです。

誰かがあなたの仕事を引き継がなければならない場合(あなたが会社を辞めたり、亡くなったりするなど)、彼らはあなたをとても嫌うでしょう.

より良い手法は、このデータをすべて格納するクラスを作成することです。

良い点は、既にデータ フォームがあるため、すべてがどのように構成されているかを既に知っていることです。

次に、データに関するその知識を使用して、読み書きできるクラスを作成します。

類似したアイテムのグループがある場合は、メイン クラスに含まれる他のクラスを作成します。

これらの類似したアイテムが複数ある場合は、これらのアイテムの公開リストを作成してください。

必要に応じて、非常にシンプルまたは複雑にします。

これらのクラスはすべて変更するのに十分な汎用性がありますが、いくつかのエクストラを追加する必要があり、実証する必要があります。

public class DataForm {

  private GroupedItem m_item2;
  public event EventHandler Item2Changed;

  public DataForm() { // this is your constructor
    Item1 = new GroupedItem();
    Item2 = new GroupedItem();
    ItemCollection = new GroupCollectionItems("Group1");
  }

  public float Value1 { get; set; }
  public float Value2 { get; set; }

  public GroupedItem Item1 { get; set; }

  public GroupedItem Item2 {
    get { return m_item2; }
    set {
      if (m_item2 != value) {
        m_item2 = value;
        if (Item2Changed != null) {
          Item2Changed(this, EventArgs.Empty); // notify whoever is listening for the change
        }
      }
    }
  }

  public GroupCollectionItems ItemCollection { get; set; }

}

public class GroupedItem {

  public GroupedItem() { // this is your constructor
  }

  public string Name { get; set; }

  public object Value { get; set; }

}

public class GroupCollectionItem {

  private GroupCollectionItem() { // this is your constructor
  }

  public static GroupCollectionItem Create(string groupName, string itemName, object itemValue) {
    var item = new GroupCollectionItem() {
      Group = groupName,
      Name = itemName,
      Value = itemValue
    };
    return item;
  }

  public string Group { get; private set; }

  public string Name { get; private set; }

  public object Value { get; set; }

}

public class GroupCollectionItems : List<GroupCollectionItem> {

  public GroupCollectionItems(string name) { // this is your constructor
    Name = name;
  }

  public string Name { get; private set; }

}
于 2013-10-02T21:13:26.453 に答える