0

次のコードを取ります。

private var m_iQuanitity:int;
public function get quantity():int
{
    return m_iQuantity;
}

それは完全に理にかなっているようです。外部のクラスからの量は問題なく確認できますが、実際にはまったく混乱することはありません。次に、次のコードを取得します。

private var m_acUsers:ArrayCollection = new ArrayCollection();
public function get users():ArrayCollection
{
    return m_acUsers;
}

その場合、変数を直接設定することはできませんが、それでも問題なく、太陽の下で他のほとんどすべてを行うことができます。そのPASSWORD関数とRemoveItemAt関数を呼び出すことができます。これは、変数を「設定」するためにかなりのことを行うことができます。

これを行うことはまだ意味がありますか?複製のArrayCollectionを作成し、複製を渡して設定を回避できることは知っていますが、純粋に防御的なプログラミングのために、あちこちでそのようなことを行うと、多くのCPU時間を浪費する可能性があります。それで、とにかくそれがまだ意味があるかどうか、どのようにそうするのか、そしてgetとsetを完全に使用するポイントを逃しているのかどうかを尋ねていると思いますか?ありがとう!

4

1 に答える 1

2

構文的には、取得したものに問題はありませんが、2番目の例では、読み取り専用プロパティ以上のものを作成することで、「get」の概念を分解しています。読み取り専用ポリシーを順守する必要がある場合は、それ以降、ArrayCollectionを操作できるようになりました。

結局、それはあなたが何をしようとしているのかということになります。値を変更できることはプロジェクトにとって重要ですか?数人以上のプロジェクトで作業している場合、このタイプのコーディングでは、コメントを追加するか、実行していることを説明する必要があります。規範外のことをするときはいつでも混乱を招く可能性があるので、何かを説明する必要を避けて、単純化して期待されることに固執することが常に最善です。

また、これが問題を引き起こす可能性のあるいくつかの方法を考えることができます-返されたプロパティをどこから来たのかわからない他のクラスに渡し、元のクラスの内部コードが失敗した場合、関数の外で値を変更します。

于 2012-11-14T14:13:27.680 に答える