0

変更したいレガシーコードがあります。クラス AI は、いくつかのメンバー (10 としましょう) を追加し、以前のものと同様にアクセスできるようにしたいと考えています。

 class A
 {
 protected:
      double m_dmember1;
      double m_dmember2;
      double m_dmember3;

 public:
      double& Member1() { return m_dmember1; }
      double& Member2() { return m_dmember2; }
      double& Member3() { return m_dmember3; }

      A();
 }

これで、さらに 10 個のメンバーと 10 個のアクセサーが追加されました。これは私には冗長に見えます。

以前の開発者がアクセサの double への参照を使用した理由が正確にはわかりません。彼は、単純な名前のみでメンバーにアクセスする方法を望んでいるようです (C# のプロパティと同様の動作だと思います)。

それで、クラス A をこれに単純化する必要がありますか、それとも悪い考えですか?

 class A
 {
 public:
      double Member1;
      double Member2;
      double Member3;

      A();
 }

クラス A のインスタンスは配列で使用されるため、参照を使用してメモリを節約できますか?

4

1 に答える 1

2

設計の観点からは、同じことです。どちらもカプセル化を破ります。

アクセサーがあるとデバッグが容易になりますが、コードはそのままにしておきます。

以前の開発者がアクセサの double への参照を使用した理由が正確にはわかりません。

参照によってメンバーの値を変更できるためです。get彼は 2 つのメソッド (と) を作成することを避け、set代わりに 1 つのメソッドを作成しました。

クラス A のインスタンスは配列で使用されるため、参照を使用してメモリを節約できますか?

いいえ、参照は戻り値の型であるためです。これらは、メモリ フットプリントにはまったく影響しません。

于 2012-08-21T11:59:40.700 に答える