2011-10-24 5 views
0

私は、学習目的でオブジェクト指向プログラミング言語を設計しています。OO言語を設計するときは、書き込み専用のプロパティを避けるべきですか?

Class Fruit: 
    Property ReadWrite Float weight 
    Property WriteOnly Integer someWriteOnlyProperty # <-- avoid? 

は、私は書き込み専用プロパティのオプションを追加する必要がありますか、プログラムで悪いデザインの決定にこれだけのリードは、この言語を使用します:言語は、このような性質を持っていますか?

+0

今日のほとんどのOOP言語で実装されているプロパティの考え方は純粋な悪であり、避けるべきだと思います。 –

+0

writeonlyプロパティは何ですか? – Ankur

+3

@MK。 - それを拡大できますか?なぜそれが「純粋な悪」だと思いますか? – Oded

答えて

3

書き込み専用のプロパティを設計するには、制限された用途にしか使用できないことに注意してください(書き込み専用で、公開しない場合は、なぜプロパティが必要ですか)。

代わりに単純な方法を使用することもできます。これにより、コードを使用する人の混乱を軽減します。


Javaおよび.NETには書き込み専用プロパティしかないため、先例があります。

+1

書き込み専用プロパティからどのような利点を引き出すことができますか? –

+0

@DJQuimby - カプセル化を強制するのに役立ちます。これを参照してください:http://stackoverflow.com/questions/2213879/do-write-only-properties-have-practical-applications – Oded

+0

ありがとう、私はそれを読んでください。 –

2

書き込み専用のプロパティはわかりません。情報目的のための読み取り専用のプロパティは非常に役に立ちますが、具体的なセカンダリは何ですか?「私はあなたに情報を提供しますが、あなたが知っていることを決して知ることはできません」

+1

例が変わると思いますパスワード。元の値は表示されず、変更するだけです。 – dnuttle

+0

これは実際の例ではありません。パスワードを設定できる場合は、プログラムが実行されている間はそのパスワードを持っています。あなたのプログラムが次回に起動されたときにのみ、「パスワードを忘れてしまったことがありません」というメッセージが表示されます。 mmmpf – Fischermaen

+0

http://stackoverflow.com/questions/2213879/do-write-only-properties-have-practical-applications – Oded

1

他のOO言語でもこれが可能です。たとえば、Javaではプライベート変数を作成し、変数を変更できるメソッドを追加できますが、変数を読み取ることはできません。あなたのアプローチは、明示的に「プロパティ」を作成するMicrosoftのラインに沿っていますが、なぜこれが問題になるのかわかりません。あなたが誤った設計上の決定をしないようにOO言語を設計した場合、あなたの言語は "DENIED"という印刷を除いて何もしないで、シャットダウンします。

+0

「DENIED」「」 – Raynos

関連する問題