DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WriteOnly Propertyって

  • 題名: WriteOnly Propertyって
  • 著者: UnhandledException
  • 日時: 2004/08/08 20:37:59
  • ID: 5449
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[環境(Any)、使用言語(Any)、Framework(Any)]
分類:[.NET]

WriteOnly Propertyっていったい何なんでしょう?
意味は分かりますが、どんなときにWriteOnlyにするのか想像できません。
■No5449に返信(UnhandledExceptionさんの記事)
> WriteOnly Propertyっていったい何なんでしょう?
> 意味は分かりますが、どんなときにWriteOnlyにするのか想像できません。

こんにちは。
具体的な方法を理解する方法として、ご自分でユーザーコントロールを作ってみてはいかがでしょうか?例えば、デザインで設定させたくないプロパティなのだが、コーディングレベルでは設定可能なプロパティ…
他にも、プログレスバーなどを使って待ってもらっている状態を表記するフォームで、タイトルを変更させるなど(下記参照)
'待ちダイアログのタイトル
Public WriteOnly Property Title() As String
 Set(ByVal Value As String)
 Me.Text = Value
 End Set
End Property
このようなフォームって使う時に情報を変更するとしても実際にそのタイトルが必要なことって少ないですよね?

実際にどのように使っているのか見たいのであれば、私のサイトに住所検索というサンプルプロジェクトがありますので、そちらを参照してみてください。
> Public WriteOnly Property Title() As String
>  Set(ByVal Value As String)
>  Me.Text = Value
>  End Set
> End Property

んなこたぁ100も承知です。
私の言葉が足りませんでしたね。すいません。

ReadOnlyの必要性はよく分かるし、実際よく使う。
Frameworkにも無数にある。
しかしWriteOnly いらんだろ、って思うのだが。
Frameworkを調べても・・。

私は書き込みしかしないと分かっていても、
WriteOnlyにはしません。
(ストリームをWriteモードにすることはあるが、これは別の話。)
あなたのサイトのサンプルは拝見していませんが、
WriteOnly でなくても 読み書き可でいいだろうと。


とにかくWriteOnlyにする必要性が分からん、ということです。
どうなんでしょう、WriteOnlyって要るの?
どういうときにWriteOnlyが適切なんでしょう?
■No5477に返信(UnhandledExceptionさんの記事)
>>Public WriteOnly Property Title() As String
>> Set(ByVal Value As String)
>> Me.Text = Value
>> End Set
>>End Property
>
> んなこたぁ100も承知です。
> 私の言葉が足りませんでしたね。すいません。
>
> ReadOnlyの必要性はよく分かるし、実際よく使う。
> Frameworkにも無数にある。
> しかしWriteOnly いらんだろ、って思うのだが。
> Frameworkを調べても・・。
>
> 私は書き込みしかしないと分かっていても、
> WriteOnlyにはしません。
> (ストリームをWriteモードにすることはあるが、これは別の話。)
> あなたのサイトのサンプルは拝見していませんが、
> WriteOnly でなくても 読み書き可でいいだろうと。
>
>
> とにかくWriteOnlyにする必要性が分からん、ということです。
> どうなんでしょう、WriteOnlyって要るの?
> どういうときにWriteOnlyが適切なんでしょう?

ReadOnlyが必要無いだろというときどうするのですか?
ReadOnlyがある為にワザワザ、戻り値用に型変換しないといけない変数だってあるんですよ。しかもデザイン用にDefault設定しないといけない時(stringやintならともかく、controlやfont、colorなどなど、めんどくさい)だってあるし…
話の分かる人いませんかね。
(ぺがらぼに教わること何もなし。と言うより答えになってない。
ReadOnlyのことは何も聞いていないと思うのだが。
こいつほんとに分かってるのかという気がしてならない。)


答えがないって事は、WriteOnly必要なしでいいんですね。
解決済み!
■No5515に返信(UnhandledExceptionさんの記事)
> 答えがないって事は、WriteOnly必要なしでいいんですね。

個人的にあまり必要性は感じません。
が、複数チームで開発する場合や独自フレームワークを開発する場合
なんかには使い道はあると思います。

WriteOnlyプロパティって「設定専用のメソッドを提供する」のと
ほぼ同じですから、メソッドでいいじゃんと言われるとそれまでです(^^;
#ただし、これはReadOnlyでもまったく同じことが言えるんですけど。
2004/08/11(Wed) 12:10:05 編集(投稿者)

今朝、書いてあったけど、あほらしくて、ある投稿者さん(誰かは判っているがあえて伏せておく)が消したんだよ。
もう少し、聞き方を考えたほうがいいよ。それとさ、
>ReadOnlyが必要無いだろというときどうするのですか?
と質問していますよ。
WriteOnlyの事を書かなかったのは、馬鹿らしいから。
あえて、記述すると、コードがスッキリするし、他の人から見ても判りやすい!(ここ重要)

まぁ、長いコード大好き!っ子さんは何を言っても文句を言うのでしょうが…

結局、必要なければ、使わなければいいじゃん!って事。
文句があるならMSに「メソッドがあるのに何でプロパティなんて有るの?」と聞けばいいのでは?

と釣られてみる。
解決済み!
UnhandledExceptionてめぇの態度がむかつく
厨房か?
■No5592に返信(通りすがりさんの記事)
> UnhandledExceptionてめぇの態度がむかつく
> 厨房か?

それには激しく同意しますが、放置プレイしてくださいです。
掲示板書き込みの注意も守れない書き込みは、フォローアップする価値すらありませんからね。:-)

http://dobon.net/vb/bbs/index.html#manners

# それにしても、ぺがらぽさんの説明でわからないとは...(^^;

■No.5521に返信(ぺがらぽさんの記事)
> 今朝、書いてあったけど、あほらしくて、ある投稿者さん(誰かは判っているがあえて伏せておく)が消したんだよ。

その通りです、アホらしくて消してしまいました。

> と釣られてみる。

# 私も釣り師であることを願いたいです。(釣られてしまったんで)
2004/08/17(Tue) 16:14:54 編集(投稿者)
2004/08/16(Mon) 23:39:36 編集(投稿者)

通りすがりさん、java.lang.Nullpoさん、こんばんは。
お二人のフォローは嬉しいっす。

さて、まじめな話、私が記述した、
>ReadOnlyがある為にワザワザ、戻り値用に型変換しないといけない変数だってあるんですよ。しかもデザイン用にDefault設定しないといけない時(stringやintならともかく、controlやfont、colorなどなど、めんどくさい)だってあるし…
WriteOnlyと非常に関係があるんですけどねぇ…
戻り値の不必要なプロパティの為にわざわざコーディングするのが非常にめんどくさいのと、戻り値がある為に、デフォルト設定しておかないと、クラスを使う側で、無駄なコードが増えるんですよねぇ…
例えば、ユーザーコントロールを作った事がある人は解ると思うのですが、regionで囲まれた「Windows フォーム デザイナで生成されたコード」を展開し、「InitializeComponent」の下側の方を覗いてもらうと、各コントロールのプロパティ設定が自動生成されているのがわかると思います。
その部分を、デフォルト設定しておかないと、戻り値用プロパティの設定コードが記述されてしまうんです。これって、コントロールの数が増えれば増えるほど、コードが増えてしまうんですねぇ…
初めてユーザーコントロールを作った時、デフォルトなんて意識してなかったので、WriteOnlyなんて書かずに、やっていたら、やたら重いので、調べてみると、上記の内容が原因だったんです。

編集1
編集ついでに、ごめんなさい。
>ReadOnlyが必要無いだろというときどうするのですか?
ここは、私の記述ミスです。Getが必要無い・・・ですね。これで勘違いしたのかもしれません。
ということで、
>ReadOnlyがある為にワザワザ、・・・
は、WriteOnlyが無い為にワザワザ、・・・
ということです。

編集2
タイトルを修正しました。
UnhandledExceptionさんがなぜこのようにけんかを売るような投稿をあえてされたのか、その意図は全く分かりませんが、このような投稿をされた方が不愉快に感じることは言うまでもなく、UnhandledExceptionさん自身もかなりのリスクを負うことになります。

今のところはUnhandledExceptionさんを排除設定にすることはしませんので、今後は「書き込みのマナーについて」をお読みいただき、ご理解いただければと思います。

・書き込みのマナーについて
http://dobon.net/vb/bbs/index.html

また、java.lang.Nullpoさんがおっしゃっている通り、このような書込みは一切無視して、返信をつけないようにしてください。言われっぱなしはしゃくに障るかとは思いますが、我慢して、大人の対応をしていただけたらと思います。

(このような記事は本来は削除してしかるべきだと思いますが、あえて削除はいたしません。)
あらら、荒れちゃってますか・・・
折角、良い管理人さんがいらっしゃるサイトなんですから
皆で大事に利用していきたいものですね。

で、本題ですが私も特に必要ないと思いますが過去に一度だけ使用したことがあります。
大した事ではないのですがちょっとしたプロテクションにデータを書き込むコントロールの基底クラスを作った時に
プロテクションのパスワード保持値をWriteOnlyにしたことがあります。
(継承側でビジュアルしか触って欲しくなかったので・・・)
必要のない方には必要はないかと思いますが「無いよりあった方が」と考えた方が良いかと思います。

言語はしょせん言語なので「こう使うのだ」と言うものは無いと思います。
特に必要性が無いような物まで含めて「用意」されているだけなので
どう使うのかといった用法はプログラマ自身に課せられているのだと思いますよ。
投稿者の発言内容を抜きにすれば、考えさせられる内容を投稿して下さったと思います。
WriteOnlyプロパティの必要性についての、私の勝手な考えを書かせてください。

# というより、一度消してしまった記事の内容を、足りない記憶力で掘り起こし、拡張させてみます。

・単にムダなソースなど書きたくない。(必要になれば付け足せば良い)

・グループ開発で使用する際には、コーダに「取得する必要がないのだ」と認識させる分には使い道がある。

・ぺがらぽさんの言うとおり、取得できてしまうせいで初期化で重くなることがある。
 (私は気付きませんでした。ぺがらぽさんのおかげで勉強になりました。ありがとうございます。)

・確かに、「メソッドで代用できる」と思うのですが、プロパティでないと意味合いが判りづらい場合があるかと。

身近な話題として、INIファイルを扱うクラスを設計するとします。(必要性は抜きにして)
私なら、ファイル名、セクション名などを設定した後、
取得メソッドでキー名を渡して取得するように設計します。

私は、「メソッド」はクラス内での手続きや動作(取得や設定など)、
「プロパティ」はそのクラスの動作(メソッド)を補助する飾りだというように考えます。
そのため、ファイル名とセクション名を設定するのはメソッドより、
プロパティの方が意味合いがわかりやすいかと思います。
ファイル名とセクション名を設定しても、動作するわけではなく、
取得または設定するメソッドの際に利用するものだからという発想です。
また、そうした方がソースコードが見やすいかと思っています。
そして、それらは取得する必要はない。(自分で設定しなきゃいけないのに、取得する意味はないですよね)

以上、勝手な考えでした。

# 皆様のおかげで色々勉強になったと思います。

DOBON.NET | プログラミング道 | プログラミング掲示板